EDIT: Es wurde darauf hingewiesen, dass dieser Stil ein GNU-ismus ist und dass Unixe, die nicht auf GNU basieren, in der Regel eine Single-Dash-Syntax verwenden (insbesondere OS X- und BSD-Varianten).
Trotz des GNU-Status verwenden viele neu geschriebene Programme im Unix-Stil diesen Stil:
--long-option für lange Optionsnamen
-s für kurze (Ein-Zeichen-) Optionen,
-abc für mehrere kurze Optionen ohne Argumente (ein Zeichen pro Option).
- Optionen mit Argumenten:
--long argoder --long=argfür lange Optionen,
-s arg, -sargoder (optional) -s=argfür kurze Optionen. Dies kann mit anderen kurzen Optionen kombiniert werden, sofern nur die letzte ein Argument enthält.
- Dieselbe "semantische" Option kann mehrere Aliase haben, am häufigsten einen kurzen (schneller zu tippenden) und einen langen (leichter zu merkenden).
Jeder, der längere Zeit eine Linux-Shell verwendet hat, sollte mit diesem Stil 1 vertraut sein , damit er das Prinzip der geringsten Überraschung auf seiner Seite hat. Es ist auch schön, die Gruppierung mehrerer kurzer Optionen zuzulassen, ohne mit langen Optionen mehrdeutig zu sein.
1 Zum Beispiel einige der Programme mit diesem Stil (auf meinem Linux - Rechner): ls, grep, man, sed, bashusw. ( EDIT: diese sind offenbar GNU-isms obwohl, BSD und O X - Maschinen verwenden Sie diesen Stil nicht)
Es gibt mehrere Bibliotheken, die sich darum kümmern können, dies für Sie zu analysieren (die bekannteste ist die Implementierung von getopt durch GNU ). Sie müssen lediglich angeben, welche Long- und Short-Optionen vorhanden sind, ob sie ein Argument annehmen und was wann zu tun ist Option gefunden. (Und natürlich, was für Positionsargumente zu tun ist, dh solche, die nicht mit -früheren Optionen beginnen und keine Argumente für diese sind)
findist ein sehr altes Programm (oder wahrscheinlich eine neu geschriebene Version eines sehr alten Programms), das nicht einfach geändert werden kann, um eine neue Befehlszeilensyntax zu verwenden. Zu viele Skripte würden kaputt gehen und zu viele Benutzer, die an die alte Syntax gewöhnt sind, würden sich beschweren. javacwurde wahrscheinlich von gccund Freunden beeinflusst, die aus historischen Gründen ebenfalls einer alten Syntax folgen.