Ist der Doppelstrich immer noch der Posix-Standard für lange Schalter?

7

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 --helpoder umzugehen --color=.
Heute verwende ich viele Befehle, bei denen diese Regel überhaupt nicht eingehalten wird, und das beste Beispiel, das ich finden kann, ist, finddass 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 posixRegeln für die Länge der Option und -oder --?

Kiwy
quelle
1
Diese Antwort enthält Hintergrundinformationen zur Syntax des Befehls find.
Anthon

Antworten:

13

Ich denke, POSIX definiert keine langen Optionen :

Richtlinie 3: Jeder Optionsname sollte ein einzelnes alphanumerisches Zeichen (die Alnum-
Zeichenklassifizierung) aus dem tragbaren Zeichensatz sein. Die Option -W (Kapital-W) ist für Anbieteroptionen reserviert.

Mehrstellige Optionen sollten nicht zulässig sein.

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.

Leiaz
quelle
das ist in der Tat interessant
Kiwy
2

findscheint die Ausnahme von der Regel zu sein. Eigentlich findauß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 tarmit oder ohne Bindestrich angegeben werden können.

Anthon
quelle
2
Der Befehl killund testsind zwei weitere Ausnahmen. testhat zweistellige Argumente wie -ltund -eq, obwohl dies eher eine Syntax ist, die zufällig mit einem Bindestrich beginnt. Und psist eine andere, die Optionen ohne Bindestriche für Legacy-Kompatibilität unterstützt.
Mike Miller