Инструменты Unix: что, если файл называется минусом?

Мне всегда интересно: большинство инструментов GNU / Unix используют опции в форме «минус-то», иногда за ними следует аргумент. Что делать, если у вас есть файл с именем минус-то?

$ ls -f $ rm -f $ ls -f $ mv -f abc mv: missing destination file operand after `abc' Try `mv --help' for more information. $ cat -f cat: invalid option -- 'f' Try `cat --help' for more information. 

или

 $ ls -ohello.c $ gcc -ohello -ohello.c gcc: fatal error: no input files compilation terminated. 

Это просто из любопытства; Для этого у меня нет прецедента.

Чтобы удалить файл с именем -x , используйте rm -- -x ( -- означает конец опций) или rm ./-x .

Довольно часто задавать этот вопрос в настройках интервью. Общим способом обработки файлов с тире является либо:

 $ rm -- -f $ rm ./-f 

Общий вопрос в Unix. Основной способ – указать полное имя пути к файлу, поэтому перед ним нет черты:

 $ rm -file.txt unknown option -l $ rm ./-file.txt #No problem! $ rm $PWD/-file.txt #Same thing 

Некоторые команды, вы можете использовать тире самостоятельно (или двойную тире), чтобы закончить параметры. Однако это не обязательно верно для всех команд или даже для одной и той же команды в разных системах.

 $ rm -- -file.txt #Works on Linux but not on some Unix systems 

Вы должны использовать

  rm -- <filename> 

Пример:

  rm -- -f 
  • Почему Windows использует обратную косую черту для путей и косые черты Unix?
  • Unix / Linux найти и отсортировать по дате изменения
  • Sudo -k vs. sudo -K
  • меньше - больше? Чем меньше? я весьма озадачен
  • Сколько Unix-групп может быть пользователем?
  • Как заменить часть текстового файла между маркерами на другой текстовый файл?
  • Откуда появляется имя в командной строке?
  • Команды Unix для получения последней измененной даты и размера файла / папки (NOT LS)
  • Mac OS X: команда не работает
  • Атрибуты файла
  • Разница между df -k и du -sh
  • Давайте будем гением компьютера.