Я слышу эти два термина взаимозаменяемо, и мне интересно, есть ли разница между ними, например, флаги для одной буквы или флаги после одной черты.
2 ответа
Вы, вероятно, найдете, что "аргументы", "опции" и "переключатели" также часто используются взаимозаменяемо в этом контексте.
"Флаги", в частности, являются логическими аргументами, устанавливаемыми простым включением аргумента командной строки, без дополнительных данных, необходимых или разрешенных для аргумента. Если вы включаете аргумент / опцию / флаг, он считается "истинным", а если вы его исключаете, он считается "ложным".
Пример аргумента типа флага:
command.exe -DeleteFiles
Пример аргумента без флага:
command.exe -ServerName my.server.com
Согласно Build Awesome Applications из командной строки в Ruby 2, основное различие заключается в следующем: switch
не принимает аргументы, а flag
-. Цитирую прямо из книги (стр. 15):
Как правило, если переключатель находится в длинной форме (например, --foo
), который включает «включение» некоторого поведения, есть также другой переключатель, которому предшествует no-
(например, --no-foo
), который выключает «выключение» поведение.
Наконец, флаги длинной формы принимают аргумент через знак равенства, тогда как в короткой форме флага знак равенства обычно не используется. Например, команда curl
, которая выполняет HTTP-запросы, предоставляет флаги краткой и длинной форм для указания метода HTTP-запроса: -X
и --request
соответственно. В следующем примере вызовов показано, как правильно передавать аргументы этим флагам:
curl -X POST http://www.google.com
curl --request=POST http://www.google.com