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.