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 arg
oder --long=arg
für lange Optionen,
-s arg
, -sarg
oder (optional) -s=arg
fü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
, bash
usw. ( 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)
find
ist 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. javac
wurde wahrscheinlich von gcc
und Freunden beeinflusst, die aus historischen Gründen ebenfalls einer alten Syntax folgen.