Unix/Linux-Befehlssyntax

Unix/Linux-Befehlssyntax

Wenn Linux-Befehle ihre Verwendung auflisten, geschieht dies normalerweise folgendermaßen (z. B. wget):

wget [option]... [URL]...

Soweit ich dieses Muster zur Angabe der Befehlsverwendung verstehe, ist dies nicht die übliche Regex-Methode zur Angabe von Mustern, und für den Befehl wget heißt es, dass es nicht zwingend erforderlich ist, Optionen anzugeben, und nach dieser Logik ist es auch nicht zwingend erforderlich, eine URL anzugeben. Ich meine, ich kann direkt

wget www.google.com

und das wird funktionieren. Die Optionen sind also nicht obligatorisch. Wenn die Optionen nicht obligatorisch sind, weil sie in eckigen Klammern stehen, dann sollte die Angabe einer URL, wenn man dieser Logik folgt, ebenfalls nicht obligatorisch sein und einfach

wget

als Befehl sollte es auch funktionieren. Meine Frage ist: Gibt es ein Dokument, in dem dieses Muster zur Angabe der Befehlsverwendung näher erläutert wird?

Antwort1

Normalerweise wird in den meisten Manpages eine Syntax verwendet, bei der [...] zur Angabe optionaler Argumente und '|' zur Angabe eines logischen ODER verwendet wird. Es hängt davon ab, wer die Manpage schreibt, da es keine Autorität gibt, die vorschreibt, wie eine Manpage lauten muss. Genauer gesagt lautet die Manpage in diesem Fall jedoch true. Sie können entweder eine URL über den Schalter -i angeben oder eine URL selbst bereitstellen. Sie können sich die Optionen also als „bedingt optional“ vorstellen. Eigentlich sollte es wahrscheinlich so etwas lauten wie

      ([option (excluding -i)] (-i file | URL)) 

aber Sie können sehen, dass dies sehr schnell kompliziert werden würde. Sie müssen die Kurzbeschreibungen also mit Vorsicht genießen. Meiner Erfahrung nach ist die Befehlssyntax normalerweise das geringste Problem.

Außerdem will ich hier nicht kleinlich sein, aber was Sie sehen, ist kein regulärer Ausdruck ;)

Antwort2

Ich glaube nicht, dass es dafür eine formelle Definition gibt (ich könnte mich aber irren), aber einer zufälligen Auswahl einiger Manpages zufolge scheint es für diese Logik keinen wirklichen Standard zu geben.

Antwort3

Ich würde erwarten, dass es heißt

wget [options] URL...
wget [-i|--input-file] file [options] [URL...]

Die einzelne Synopsis-Zeile ist bei GNU-Manpages recht üblich, wobei die maßgebliche Dokumentation dieInfo Dokumentation, und die Manpage ist eine sehr kurze Zusammenfassung, die oft nur die gebräuchlichsten Optionen beschreibt.

Vergleichen Sie dies mit BSD-Tools wieTeerund das unabhängige Werkzeugrsync.

Andererseits,POSIX-Dienstprogrammkonventionensagen, dass für sich gegenseitig ausschließende Optionen mehrere Zusammenfassungszeilen verwendet werden sollten, die -iOption sich jedoch tatsächlich nicht gegenseitig ausschließt.

Antwort4

man 7 man-pages(aus dem Linux-Manpages-Paket) erläutert einige Konventionen, die Sie kennen sollten, auch wenn es einige Manpages gibt, die den Konventionen nicht folgen.

verwandte Informationen