Я бачив багато навчальних посібників, які використовують --команди after. Щось на зразок цього:
command --
Що це --означає?
Я бачив багато навчальних посібників, які використовують --команди after. Щось на зразок цього:
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, побачив розділ, який я цитував, але не помітив, що він знаходиться в розділі "Параметри командного рядка". Дякуємо за виправлення, відповідь відредагована.
Більшість команд використовуватиме a - для того, щоб сказати команді, що подальші параметри слід обробляти по-різному. Одним із прикладів є назва rm - --filename, зазначене вище. Інший приклад, такий сценарій, як 'startx', буде інтерпретувати все все раніше - і передавати все після нього на X-сервер.