EDIT: è stato sottolineato che questo stile è un GNU-ismo e che gli Unix non basati su GNU tendono ad usare una sintassi a trattino singolo (in particolare, varianti di OS X e BSD).
Nonostante sia lo stato di GNU-ism, molti programmi in stile Unix appena scritti usano questo stile:
--long-option
per nomi lunghi di opzioni,
-s
per opzioni brevi (di un carattere),
-abc
per più opzioni brevi senza argomenti (un carattere per opzione).
- Opzioni con argomenti:
--long arg
o --long=arg
per lunghe opzioni,
-s arg
, -sarg
O (a scelta) -s=arg
per le opzioni brevi. Questo può essere combinato con altre opzioni brevi, purché solo l'ultimo abbia un argomento.
- La stessa opzione "semantica" può avere diversi alias, più comunemente uno corto (più veloce da digitare) e uno lungo (più facile da ricordare).
Chiunque abbia usato una shell Linux per un certo periodo di tempo dovrebbe avere familiarità con questo stile 1 , quindi ha il principio della minima sorpresa dalla sua parte. È anche bello consentire il raggruppamento di più opzioni brevi senza essere ambigui con opzioni lunghe.
1 Per esempio, alcuni dei programmi che utilizzano questo stile (sulla mia macchina Linux): ls
, grep
, man
, sed
, bash
, ecc ( EDIT: queste sono apparentemente GNU-ismi però, macchine BSD e OS X non utilizzare questo stile)
Esistono diverse librerie che possono occuparsi di analizzare questo per te (la più nota è l'implementazione di getopt di GNU ), che richiede solo che tu specifichi quali opzioni lunghe e brevi esistono, se accettano un argomento e cosa fare quando un opzione trovata. (E ovviamente, cosa fare per gli argomenti posizionali, cioè quelli che non iniziano con -
e non sono argomenti rispetto alle opzioni precedenti)
find
è un programma molto vecchio (o forse più probabile: una versione riscritta di un programma molto vecchio) che non può essere facilmente modificato per utilizzare una nuova sintassi della riga di comando. Troppi script si spezzerebbero e troppi utenti abituati alla vecchia sintassi si lamenterebbero. javac
è stato probabilmente influenzato da gcc
e amici, che allo stesso modo seguono una vecchia sintassi per motivi storici.