Как я могу использовать различные команды Linux, такие как cat , ls , touch , more , less ... с файлом, названным символами как - / -- и так далее?

Спасибо!

2 ответа2

3

Косая черта / никогда не может появиться в имени файла, потому что это разделитель пути.

Когда имя файла начинается с тире, программы обычно пытаются интерпретировать его как опцию, и есть два способа избежать этого:

  • Используйте специальный параметр -- это означает , что «все после того, как это будет только имена, а не варианты». Например, если у вас есть файлы с именами -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
    
0

Для разграничения списка опций используйте -- т.е. введите следующую команду:

ls -l -- *.txt

http://www.cyberciti.biz/faq/linuxunix-move-file-starting-with-a-dash/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .