вытащить файл с именем ~

вытащить файл с именем ~

Итак, я скачал музыкальный альбом из 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?

Связанный контент