Как я могу использовать различные команды Linux, такие как cat
, ls
, touch
, more
, less
... с файлом, названным символами как -
/
--
и так далее?
Спасибо!
Как я могу использовать различные команды Linux, такие как cat
, ls
, touch
, more
, less
... с файлом, названным символами как -
/
--
и так далее?
Спасибо!
Косая черта /
никогда не может появиться в имени файла, потому что это разделитель пути.
Когда имя файла начинается с тире, программы обычно пытаются интерпретировать его как опцию, и есть два способа избежать этого:
Используйте специальный параметр --
это означает , что «все после того, как это будет только имена, а не варианты». Например, если у вас есть файлы с именами -rf
и --hello--
, вы можете использовать:
rm -- -rf --hello--
Или, проще, сделать имена не начинающимися с тире , указав им полный путь. Например, вы можете указать, что они в .
(текущий каталог), заканчивающийся:
rm ./-rf ./--hello--
Или вы можете использовать полный путь:
rm /home/Krishath/-rf /home/Krishath/--hello--
Другой случай, когда в середине имени есть специальные символы (-
не является специальным; $
будет специальным).
Сначала попробуйте "убежать" от них с помощью \
. Например, если у вас есть файл с именем wei"rd$na'me
, используйте:
cat we\"ird\$na\'me
Это работает со всем, включая пробелы, и является самым простым способом, когда у вас есть только один или два символа для работы.
Другой метод - заключить в кавычки. К сожалению, цитирование в оболочках командной строки немного сбивает с толку - иногда и 'name'
и "name"
работают, иногда только один из них.
(Например, специальные символы |
или <
могут быть заключены в двойные кавычки, но $
или `
не могут. С другой стороны, одинарные кавычки будут работать со всем, кроме случаев, когда само имя файла содержит одинарные кавычки.)
Однако, если имя файла просто содержит пробелы, кавычки, безусловно, будут проще:
mv "Some long file name.txt" ~/trash
Для разграничения списка опций используйте --
т.е. введите следующую команду:
ls -l -- *.txt
http://www.cyberciti.biz/faq/linuxunix-move-file-starting-with-a-dash/