Я видел много уроков, которые используют --команды после. Что-то вроде этого:
command --
Что это --значит?
Я видел много уроков, которые используют --команды после. Что-то вроде этого:
command --
Что это --значит?
Ответы:
--Используется , чтобы указать конец параметров командной строки. Это позволяет вам использовать аргументы, начинающиеся с --. Например, если вы создаете файл с именем --foo:
$ > '--foo'
$ ls
--foo
А затем попытайтесь удалить его, rmподумайте, что вы даете этому аргумент:
$ rm --foo
rm: unrecognized option '--foo'
Try 'rm ./--foo' to remove the file '--foo'.
Try 'rm --help' for more information.
Одним из способов обойти это является использование --:
$ rm -- --foo
Это обычная практика, рекомендуемая POSIX , поэтому она поддерживается многими программами.
rmпрограммы и многих POSIX-совместимых утилит. См. Положение 10 . Чтобы на самом деле убедиться, что это не Bash, выполняющий работу (и это не имеет смысла), просто создайте небольшой скрипт с помощью just printf '> %s <\n' "$@"и запустите его с помощью --.
--, но, конечно, это просто потому, что соответствующий модуль Perl ( getopts) также поддерживает его. Вы совершенно правы, я просто быстро искал man bash, видел раздел, который я процитировал, но не заметил, что он находится в разделе «параметры командной строки». Спасибо за исправление, ответ отредактирован.
Большинство команд будут использовать -, чтобы сообщить команде, что другие параметры должны обрабатываться по-разному. Одним из примеров является rm - --filename, указанное выше. Другой пример, такой скрипт, как 'startx', будет интерпретировать сам все до - и передавать все после него на X-сервер.