Es gibt keinen verbreiteten Standard. Es gibt eine gewisse Konsistenz zB in GNU-Programmen, aber Sie müssen die Dokumentation jedes Programms überprüfen.
Zitiert Wikipedia , Hervorhebung von mir:
In Unix-ähnlichen Systemen wird häufig der ASCII-Bindestrich verwendet, um Optionen anzugeben. Auf das Zeichen folgen normalerweise ein oder mehrere Buchstaben . Ein Argument, bei dem es sich um einen einzelnen Bindestrich ohne Buchstaben handelt, gibt normalerweise an, dass ein Programm Daten verarbeiten soll, die von der Standardeingabe stammen, oder Daten an die Standardausgabe senden soll. In einigen Programmen werden zwei Bindestriche (-) verwendet, um "lange Optionen" anzugeben, bei denen aussagekräftigere Optionsnamen verwendet werden . Dies ist ein allgemeines Merkmal von GNU-Software.
In der Regel geben Bindestriche ein vordefiniertes Argument an. Ich denke, es wird verwendet, um sie von zB Dateinamen oder anderen Bezeichnungen zu unterscheiden, die Sie als Argumente verwenden könnten. Dies ist jedoch nicht immer der Fall (siehe unten).
Oft finden Sie das gleiche Argument sowohl als kurze als auch als lange Option, wie z . B. in ls .
Einige Programme verwenden einen einzelnen Bindestrich für Optionen mit einem Zeichen und zwei Bindestriche für Optionen mit mehreren Zeichen, aber nicht alle (GNU find
kommt in den Sinn). Einige Programme haben optionale Bindestriche oder überspringen diese ganz ( tar
oder BSD ps
kommt in den Sinn).
Manchmal --foo
erfordern lange Optionen ( ) Argumente, kurze Optionen ( -f
) hingegen nicht (oder implizieren zumindest ein bestimmtes Standardargument).
Kurze Optionen (zB cut -d ' '
) können Argumente haben, lange Optionen (zB ls --all
) müssen sie nicht unbedingt haben.
Um ein bestimmtes Verhalten eines Programms festzulegen, müssen Sie manchmal eine kurze Option verwenden, für andere müssen Sie eine lange Option verwenden, und für einige haben Sie die Wahl.
In einem ähnlichen Zusammenhang können einige Programme keine Leerzeichen zwischen einer Option und ihrem Argument verarbeiten , während andere dies nicht können.
Wie ich am Anfang schrieb, gibt es einfach kein gemeinsames Verhalten oder Standard. Häufig können Sie ein ähnliches Verhalten wie in derselben Bibliothek verfolgen, die für das Parsen von Argumenten verwendet wird, aber Sie möchten wahrscheinlich nicht die Quellen lesen, um dies herauszufinden.
Sie können die Argument-Syntax eines Programms nicht wirklich von der eines anderen ableiten.
Wenn Sie auch Windows in Betracht ziehen, wird es noch schlimmer: Während die Windows-Befehlszeilenaufrufe traditionell /f
(zumindest die meiste Zeit) einzelne Zeichen für Optionen verwenden, mit :
als Trennzeichen zwischen Optionen und deren Wert (siehe z. B. hier ); plattformübergreifende Dienstprogramme sind weit verbreitet (wie die von Ihnen erwähnten) und bringen die häufigere Bindestrichsyntax für Argumente mit, mit all den oben genannten Inkonsistenzen.
-i
vs.--input
oder-n
--dry-run
.