Я столкнулся с непонятной вариацией в понимании того, какие варианты и аргументы есть в отношении синтаксиса команд.
Например, я столкнулся с такими определениями:
command -a -b -c d e f
некоторые из них различаются
-a -b -c
, называть их опциями или переключателями иd e f
называть их аргументами.command -a -b -c d e f
некоторые, например
bash
руководство, вызывают все-a -b -c d e f
аргументы и объясняют, что все они доступны из скрипта$1 $2 $3 $4 $5 $6
соответственно.command -a b=c
некоторые вызывают
-a
опцию,b
аргумент иc
значение, но другие смешивают их, как в первых двух пунктах, в одном варианте, вызывая все-a b c
аргументы.
Эти три версии являются лишь примерами для множества различных вызывающих разновидностей, я даже не знаю, как перечислить их все, но я заметил, что наверняка не существует фиксированного соглашения об именах.
Или, по крайней мере, не существует соглашения о стандартизированных именах, о котором я знаю, потому что я сталкивался с разными случайными источниками, но даже среди официальных сайтов или руководств, связанных с Linux и GNU, я мог встретить это несоответствие.
Есть ли неоспоримая официальная схема именования, на которую я могу сослаться?
источник
Ответы:
Адаптировано из раздела «Синтаксис служебного аргумента» стандарта POSIX :
Утилита в примере называется
utility_name
. За ним следуют параметры , параметры-аргументы и операнды .Аргументы, которые состоят из
-
символов и отдельных букв или цифр, таких какa
, известны как параметры (или, исторически, флаги ). За некоторыми параметрами следует параметр-аргумент , как показано с помощью[-c option_argument]
. Аргументы, следующие за последними параметрами и параметрами-аргументами, называются операндами .Стандарт также определяет «аргумент» как
Все, что находится
utility_name
в командной строке после аргумента утилиты , и все они отображаются в позиционных параметрах, если это сценарий оболочки. Термины option, option-аргумент и операнд являются более конкретными именами этих аргументов в командной строке.«Флаг» и «переключатель» являются общими синонимами слова «опция».
В случае
-a
иb=c
аргументы,-a
является опцией, если утилита распознает ее как таковую (ln
утилита не имеет-x
опцию, поэтому , строго говоря,-x
не является опциейln
иln -x
вызовет диагностическое сообщение),b=c
опция-аргумент , если-a
параметр принимает аргумент, в противном случае это операнд,b
и неc
являются опциями, опциями-аргументами и не являются операндами сами по себе.Как вы заметили из моего текста выше, работать с кратким обзором утилиты (как указано в руководстве утилиты) было бы проще, чем пытаться декодировать общую команду, набранную в командной строке. В руководстве будет четко указано, какие параметры принимают аргументы-аргументы, а какие являются операндами и т. Д.
Называть
c
«значение» ИМХО совершенно нормально. Это не то, что стандартизировано, но очень немногие могут вас неправильно понять, если вы скажете «c
это значение, данноеb
». Это будет ясно из контекста рассматриваемой утилиты.Например
Тот , кто знает о
awk
бы сказать , что-v var="d"
означает « переменной присваивается значение в командной строке ».awk
var
d
источник