Ich stieß auf eine verwirrende Variation im Verständnis der Optionen und Argumente in Bezug auf die Syntax von Befehlen.
Zum Beispiel stieß ich auf Definitionen wie:
command -a -b -c d e f
Einige unterscheiden sich zwischen
-a -b -c
Optionen oder Schaltern undd e f
dem Aufrufen von Argumenten.command -a -b -c d e f
Einige, zum Beispiel ein
bash
Handbuch, rufen alle-a -b -c d e f
Argumente auf und erklären, dass alle über ein Skript von$1 $2 $3 $4 $5 $6
jeweils zugänglich sind.command -a b=c
Einige nennen
-a
eine Option,b
ein Argument undc
den Wert, andere mischen sie wie in den ersten beiden Punkten in einer Variante, die alle-a b c
Argumente aufruft .
Diese drei Versionen sind nur Beispiele für eine Vielzahl verschiedener aufrufender Sorten. Ich weiß nicht einmal, wie ich sie alle auflisten soll, aber ich habe festgestellt, dass es mit Sicherheit keine feste Namenskonvention gibt.
Zumindest gibt es keine standardisierte Namenskonvention, die ich kenne, weil ich auf verschiedene zufällige Quellen gestoßen bin, aber selbst bei offiziellen Linux- und GNU-verbundenen Websites oder Handbüchern konnte ich diese Inkonsistenz feststellen.
Gibt es ein unbestreitbares offizielles Namensschema, auf das ich mich beziehen kann?
Antworten:
Angepasst an den Abschnitt "Utility Argument Syntax" des POSIX-Standards :
Das Dienstprogramm im Beispiel heißt
utility_name
. Es folgen Optionen , Optionsargumente und Operanden .Die Argumente, die aus
-
Zeichen und einzelnen Buchstaben oder Ziffern bestehena
, werden als Optionen (oder historisch gesehen als Flags ) bezeichnet. Auf bestimmte Optionen folgt ein Optionsargument , wie mit gezeigt[-c option_argument]
. Die Argumente nach den letzten Optionen und Optionsargumenten werden als Operanden bezeichnet .Der Standard definiert auch "Argument" als
Alle Dinge nach dem
utility_name
in der Befehlszeile sind die Argumente des Dienstprogramms , und sie werden alle in den Positionsparametern angezeigt, wenn es sich um ein Shell-Skript handelt. Die Begriffe Option, Optionsargument und Operand sind spezifischere Namen für diese Argumente in der Befehlszeile."Flag" und "switch" sind gebräuchliche Synonyme für "option".
Im Falle des
-a
undb=c
sind Argumente,-a
ist eine Option, wenn das Dienstprogramm sie als solche erkennt (dasln
Dienstprogramm hat keine-x
Option,-x
ist alsoln
streng genommen keine Option undln -x
würde eine Diagnosemeldung auslösen).b=c
ist ein Optionsargument, wenn die-a
Option ein Argument akzeptiert, andernfalls ist es ein Operand,b
undc
sind keine Optionen, Optionsargumente und keine Operanden an sich.Wie Sie meinem obigen Text entnehmen können, wäre es einfacher gewesen, anhand der Zusammenfassung eines Dienstprogramms (wie im Handbuch des Dienstprogramms angegeben) zu arbeiten, als zu versuchen, einen in der Befehlszeile eingegebenen generischen Befehl zu dekodieren. Im Handbuch wird klar angegeben, welche Optionen Optionsargumente annehmen und welche Argumente Operanden usw. sind.
So rufen Sie
c
einen „Wert“ ist IMHO vollkommen ok. Es ist nicht standardisiert, aber nur sehr wenige würden Sie missverstehen, wenn Sie sagen, "c
ist der Wert, dem gegeben wirdb
". Dies ergibt sich aus dem Kontext des betreffenden Dienstprogramms.Beispielsweise
Jeder, der davon weiß,
awk
würde sagen, dass-v var="d"
" derawk
Variablenvar
der Wertd
in der Befehlszeile zugewiesen wird ".quelle