EDIT: È stato sottolineato che questo stile è un GNU-ism, e che gli Unix non-GNU tendono ad usare una sintassi a un solo trattino (in particolare, le varianti OS X e BSD) .
Nonostante sia lo stato GNU-ism, molti programmi in stile Unix appena scritti usano questo stile:
-
--long-option
per nomi di opzioni lunghe,
-
-s
per le opzioni brevi (carattere singolo),
-
-abc
per più opzioni brevi senza argomenti (un carattere per opzione).
- Opzioni con argomenti:
-
--long arg
o --long=arg
per le opzioni lunghe,
-
-s arg
, -sarg
o (opzionalmente) -s=arg
per 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 breve (più veloce da digitare) uno 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 sorpresa minima dalla sua parte. Anche il raggruppamento di più opzioni brevi senza essere ambigue con le opzioni lunghe è bello.
1 Per esempio, alcuni dei programmi che usano questo stile (sulla mia macchina Linux): ls
, grep
, man
, sed
, bash
, ecc. ( EDIT: questi sono apparentemente GNU-isms però, le macchine BSD e OS X non usano questo stile)
Ci sono diverse librerie che possono occuparsi di analizzare ciò per te (il più noto è L'implementazione di GNU di getopt ), che richiede solo che tu specifichi quali opzioni lunghe e brevi esistono, se prendono un argomento e cosa fare quando viene trovata un'opzione. (E naturalmente, che cosa fare per gli argomenti posizionali, cioè quelli che non iniziano con -
e non sono argomenti 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 interromperanno e troppi utenti abituati alla vecchia sintassi si lamenterebbero. javac
è stato probabilmente influenzato da gcc
e amici, che similmente seguono una vecchia sintassi per motivi storici.