Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Открыть файл со спецсимволами в имени

#linux #файлы


У есть файл с именем :~/. 

Я не могу открыть этой файл cat ':~/'. Разные способы попробовал, но результата нет.

Как его открыть? 

Кстати только sh работает, bash ограничено.

В папке такие файлы:

~ $ ls
#~o         :'(         :~#         :~E         =)          XD
$diary.txt  :(          :~&         :~J         =8)         X~(
(*v*)       :)          :~(         :~P         =D          X~p
(.V.)       :*          :~)         :~Q         =O          ^_^
(~:         :*)         :~)(~:      :~o         =P          |~O
(~}{~)      :>          :~)*        :~|         =^.^=       ~,~
)~:         :P          :~*         :~∕         =~O         ~:0
*<:o)       :S          :~>         ;)          >:)
*~*         :_(         :~@         ;~)         B~)
-$          :o          :~B         <:3)~       O.o
8~)         :o3         :~D         =(          O:~)

    


Ответы

Ответ 1



Символ / запрещён в имени в большинстве современных ОС, поэтому файл :~/ существовать не может в принципе. Вместо этого у вас существует файл :~∕ — в нём используется другая косая черта. Да, это две РАЗНЫЕ косые черты, несмотря на то, что в терминале они выглядят одинаково: / U+002F SOLIDUS — косая черта, которая в именах не бывает ∕ U+2215 DIVISION SLASH — это знак деления, который похож на косую черту Соответственно, если вместо косой черты использовать знак деления, то команда cat ':~∕' отлично работает.

Ответ 2



копия моего ответа (с заменой «каталог» → «файл») на по сути аналогичный вопрос: запустите (предварительно установив, если не установлен, и есть такая возможность) какой-нибудь файловый менеджер: mc, lfm, vifm, ranger и т.п. если установлен vim (не vi!) и надо отредактировать какой-то файл, то можно им и воспользоваться как файловым менеджером: vim . — программа запустится в режиме netrw (по умолчанию этот скрипт, вроде бы, установлен в ubuntu), где можно будет «перейти» к любому файлу/каталогу. нажатие enter будет интерпретировано для каталога — как cd, для файла — открытие его для редактирования. если установлен emacs, можно воспользоваться его пакетом dired — directory editor. на самый крайний (зато абсолютно универсальный) случай можно воспользоваться конструкцией cat -- "$(...)", где вместо ... должна идти команда, возвращающая имя нужного файла (кавычки нужны для тех случаев, когда в названии файла есть пробелы, а -- — на случай, если имя файла начинается с дефиса). это может быть, например, команда ls | sed -n 2p, где 2 — номер нужного файла в выдаче ls. посмотреть пронумерованную выдачу ls можно, например, так: $ ls | nl 1 acpi 2 adduser.conf 3 adjtime 4 alternatives 5 anacrontab ... т.е., для просмотра файла adduser.conf надо выполнить: $ cat -- "$(ls | sed -n 2p)"

Ответ 3



Кто-то весело поразвлекался :). Попробуйте использовать экранирование. Пишите символы через . Например (\~}{\~) вместо (~}{~) и т.п. Единственное - символ '/' - его не должно быть, это зарезервированный символ, либо используется похожий спецсимвол (там есть один) или же это вообще каталог, который записывается также как и /usr/

Комментариев нет:

Отправить комментарий