Ich habe mehrere Fragen zu Double Dash gelesen:
Einzelstriche -
für Einzelzeichenoptionen, aber Doppelstriche --
für Wörter?
Was bedeutet --
(Doppelstrich)? (auch als "nackter Doppelstrich" bekannt)
Ich erinnere mich jedoch an einen Lehrer vor 4 Jahren, der mir erzählte, dass dies --
die beste Art war, mit langen Schaltern wie --help
oder umzugehen --color=
.
Heute verwende ich viele Befehle, bei denen diese Regel überhaupt nicht eingehalten wird, und das beste Beispiel, das ich finden kann, ist, find
dass keine langen Schalter einen doppelten Strich machen, selbst wenn sie sehr nervig sind AIX find
.
War mein Lehrer falsch? oder ändert sich die Regel seitdem (was unwahrscheinlich erscheint)?
Und schließlich gibt es posix
Regeln für die Länge der Option und -
oder --
?
Antworten:
Ich denke, POSIX definiert keine langen Optionen :
Der Doppelstrich ist eine GNU-Konvention .
In der POSIX-Definition von find sind die "langen Schalter" mit einem Strich nicht Teil der Optionen, sondern ein als Operand angegebener Ausdruck.
quelle
find
scheint die Ausnahme von der Regel zu sein. Eigentlichfind
außerhalb der Gruppe der anfänglichen Utility-Entwickler für Unix entstanden, daher ist es nicht konform, 'lange' Optionen zu verwenden.Wie so oft erfolgte die Standardisierung erst, nachdem die Verwendung von Kurz- und Langoptionen in den meisten Programmen gängige Praxis geworden war , und dies teilweise, weil einige Routinen oder Bibliotheken für das Parsen von Optionen verfügbar wurden (wodurch einige nicht explizite erzwungen wurden) Standard). Aber zu dieser Zeit war es natürlich zu spät, bestehende Programme so zu ändern
find
, dass Skripte nicht beschädigt werden. Die POSIX-Konformität mit doppelten Strichen ist weniger wichtig, als diese Skripte nicht zu beschädigen.Abwärtskompatibilität ist zB auch der Grund, warum kurze Optionen für
tar
mit oder ohne Bindestrich angegeben werden können.quelle
kill
undtest
sind zwei weitere Ausnahmen.test
hat zweistellige Argumente wie-lt
und-eq
, obwohl dies eher eine Syntax ist, die zufällig mit einem Bindestrich beginnt. Undps
ist eine andere, die Optionen ohne Bindestriche für Legacy-Kompatibilität unterstützt.