Есть ли разница между флагом командной строки и параметром командной строки?
Я слышу эти два термина взаимозаменяемо, и мне интересно, есть ли какая-либо разница между ними, например, флаги для одной буквы или флаги после одной черты.
2 ответа
Вы, вероятно, найдете "аргументы", "опции" и "переключатели", которые также часто используются взаимозаменяемо в этом контексте.
"Флаги", в частности, являются логическими аргументами, устанавливаемыми простым включением аргумента командной строки, без дополнительных данных, необходимых или разрешенных для аргумента. Если вы включите аргумент / опцию / флаг, он будет считаться "истинным", а если вы его исключите, он будет считаться "ложным".
Пример аргумента типа флага:
command.exe -DeleteFiles
Пример аргумента без флага:
command.exe -ServerName my.server.com
Согласно Build Awesome Command-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