Итак, я скачал музыкальный альбом из aMule, и он находится в каталоге .aMule/Incoming
. Я попытался переместить его с помощью следующей команды:
mv albumName.rar ~
Это оставило меня с файлом ~
, который .aMule/Incoming
я не мог переименовать, потому что тильда зарезервирована для домашнего каталога. Я знаю, что могу получить к нему доступ через Nautilus, показав скрытые файлы. Как мне вытащить его в терминале?
Обновлять Вот как это выглядит сейчас
manuzhang@manuzhang-R458-R457:~/.aMule/Incoming$ ls -l
total 328
-rw-r--r-- 1 manuzhang manuzhang 297266 2012-03-19 12:07 ~
-rw-r--r-- 1 manuzhang manuzhang 34479 2011-10-11 19:51 [kat.ph]friends.season.1.with.english.subtitles.torrent
решение1
mv \~ ~/albumName.rar
mv '~' ~/albumName.rar
mv ./~ ~/albumName.rar
Вы всегда можете защитить символ, имеющий особое значение в оболочке, поставив перед ним обратную косую черту.
Вы всегда можете указать оболочке интерпретировать последовательность буквально, поместив ее в одинарные кавычки. Единственный символ, который вы не можете поместить внутрь такой строки литерала, — это сама одинарная кавычка, поскольку она указывает на конец строки литерала. Вы можете использовать '\''
вместо этого; это означает «конец литерала, символ '
, начало литерала», но вы можете думать об этом как о странном способе помещения одинарной кавычки внутрь строки литерала в одинарных кавычках.
Этот символ ~
является специальным только в начале пути, поэтому если вы укажете каталог, ~
будет указано имя файла в этом каталоге.
Обратите внимание, что если имя файла начинается с -
, то будет работать только последний из этих трех методов. Это связано с тем, -
что не является специальным для оболочки; он имеет особое значение для команды: он указывает на опцию. Другой способ защиты -
от этого специального значения — поместить специальную опцию --
перед ним: --
в командной строке указывает на конец опций, после него могут идти только имена файлов (или другие аргументы, не являющиеся опциями).
Обратите внимание также, что команда, которую вы показываете, должна была скопировать файл в ваш домашний каталог, так как ~
символ должен был быть интерпретирован оболочкой. Возможно, вы ошиблись и создали файл, который не называется ~
. Запустите ls -q
или , ls -Q
чтобы проверить, содержит ли имя файла непечатаемый символ. Если это не дает визуального указания, попробуйте ls | od -t o1
, который покажет восьмеричный код для каждого байта в имени файла. В ksh, bash или zsh вы можете использовать $'\123'
в командной строке для указания символа по его восьмеричному коду. В качестве альтернативы вы можете найти шаблон, который соответствует файлу. Например, если вы определили, что длина имени файла равна 3, и что единственные другие файлы, длина которых равна 2, это foo
и bar
, вы можете переместить файл с помощью
mv ./[^bf]?? ~/albumName.rar
А если вы готовы использовать мышь, а имя состоит из печатных символов, которые вы не знаете, как набрать: скопируйте и вставьте имя файла из вывода ls
.
решение2
Укажите путь к файлу.
cat ./~
решение3
Вставленное обновление показывает, что это какой-то символ из ASCII или Unicode, а не простая тильда... Можете ли вы использовать mc
или другой файловый менеджер? Как насчет того, чтобы переместить всеещеиз этого каталога, а затем использовать автодополнение клавишей Tab?