Natknąłem się na mylącą odmianę w zrozumieniu, jakie są opcje i argumenty w odniesieniu do składni poleceń.
Na przykład napotkałem definicje takie jak:
command -a -b -c d e f
niektóre różnią się
-a -b -c
, nazywają je opcjami lub przełącznikami id e f
wywołują je jako argumenty.command -a -b -c d e f
niektóre, na przykład
bash
instrukcja, wywołują wszystkie-a -b -c d e f
argumenty i wyjaśniają, że wszystkie są dostępne odpowiednio ze skryptu$1 $2 $3 $4 $5 $6
.command -a b=c
niektórzy nazywają
-a
opcję,b
argument ic
wartość, ale inni mieszają je jak w pierwszych dwóch punktach, w jednej odmianie wywołującej wszystkie-a b c
argumenty.
Te trzy wersje są tylko przykładami wielu różnych odmian wywołujących, nawet nie wiem, jak je wszystkie wymienić, ale zauważyłem, że na pewno nie ma ustalonej konwencji nazewnictwa.
A przynajmniej nie znam znanej znanej mi konwencji, ponieważ natrafiłem na różne losowe źródła, ale nawet wśród oficjalnych stron lub podręczników powiązanych z Linuksem i GNU mogłem sprostać tej niespójności.
Czy istnieje niekwestionowany oficjalny schemat nazewnictwa, do którego mogę się odwoływać?
źródło
Odpowiedzi:
Zaadaptowano z sekcji „Składnia argumentów narzędzia” standardu POSIX :
Narzędzie w tym przykładzie ma nazwę
utility_name
. Po nim następują opcje , argumenty opcji i operandy .Argumenty składające się ze
-
znaków i pojedynczych liter lub cyfr, takie jaka
, są znane jako opcje (lub, historycznie, flagi ). Po niektórych opcjach następuje argument-argument , jak pokazano za pomocą[-c option_argument]
. Argumenty występujące po ostatnich opcjach i argumenty opcji są nazywane operandami .Standard definiuje również „argument” jako
Wszystkie znaki występujące po
utility_name
wierszu poleceń są argumentami narzędzia i wszystkie pojawiają się w parametrach pozycyjnych, jeśli jest to skrypt powłoki. Terminy opcja, opcja-argument i operand są bardziej szczegółowymi nazwami tych argumentów w wierszu poleceń.„Flaga” i „zmiana” są powszechnymi synonimami „opcji”.
W przypadku
-a
ib=c
są argumentami,-a
jest opcją, jeśli narzędzie rozpoznaje ją jako taką (ln
narzędzie nie ma-x
opcji, więc-x
nie jest to opcjaln
, mówiąc ściśle, iln -x
wywołałaby komunikat diagnostyczny),b=c
Jest to opcja-argumentem jeśli-a
opcja wymaga argumentu, w przeciwnym razie jest to argumentu,b
i same w sobie niec
są opcjami, argumentami opcji i nie są operandami.Jak zauważasz z mojego tekstu powyżej, praca z streszczenia narzędzia (podanego w podręczniku narzędzia) byłaby łatwiejsza niż próba dekodowania ogólnego polecenia wpisanego w wierszu poleceń. Podręcznik wyraźnie określi, które opcje przyjmują argumenty opcji, a które argumenty są operandami itp.
Nazywanie
c
„wartości” jest absolutnie w porządku. To nie jest coś, co jest ustandaryzowane, ale bardzo niewielu nie zrozumie cię, jeśli powiesz „c
to wartość podana dlab
”. Będzie to jasne z kontekstu danego narzędzia.Na przykład
Każdy, kto wie o
awk
powiedziałbym, że-v var="d"
środki „ zmienna jest przypisana wartość w wierszu poleceń ”.awk
var
d
źródło