Как я могу использовать различные команды 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/