Perché ci sono alternative brevi e lunghe per le opzioni della riga di comando?


21

La maggior parte dei comandi unixoid presenta alternative brevi e lunghe per le opzioni della riga di comando, come ls -a e ls --all, o ls -A e ls --almost-all. Perché esistono questi due modi? Uno è più breve da digitare, l'altro è più facile da leggere e capire. Ma ogni volta che scrivo uno script di shell, ho bisogno di decidere quale voglio usare. È noto il motivo per cui esistono due alternative? Quale era il primo, perché l'altro è stato introdotto. Ad esempio, su DOS / Windows ci sono quasi solo opzioni maiuscole e minuscole.

Risposte:


23

Originariamente c'erano solo opzioni a carattere singolo. Alcuni programmi richiedevano opzioni a più caratteri, ma sempre con un singolo trattino. Le opzioni AFAIK con doppio trattino a più caratteri provengono da GNU ; sono stati introdotti perché sono più leggibili e spesso più memorabili (e puoi averne più di 52). Molti programmi ora hanno entrambi: brevi opzioni per quando si digita sulla riga di comando e si ricorda il carattere, le lunghe opzioni per gli script o sulla riga di comando se si ricorda solo il nome dell'opzione più lungo.


13
+1 per menzionare che le opzioni lunghe sono migliori per gli script, perché aiutano a documentare le cose
Norman Gray

5
Per quanto riguarda "solo 52 di loro": Prova ls -BartSimpsonIsJustCool (o Great se sei su Solaris.
Aaron Digulla

1
@ AaronDigulla È questo uovo di Pasqua?
user712092

4
@ user712092 No, è un trucco. Sotto Linux, tutto dopo il I è l'argomento del -I opzione, quindi fa la differenza solo se hai un file chiamato sJustCool nella directory corrente. Il -BartSimpson parte può essere riordinata, tranne che il S (ordina per dimensione) deve rimanere dopo il t (ordinare per data). Anche m non ha effetto quando n o o sono presenti. Quindi il comando è equivalente a ls -BSainopsre se non mi sono perso nulla, non è possibile rimuovere un'altra lettera per ottenere lo stesso risultato ed è possibile riordinare queste lettere liberamente.
Gilles

2
@Gilles: a proposito, per essere il più precisi possibile, ci possono essere 62 diverse opzioni brevi (comprese le cifre), non 52. gzip -9 filename per esempio.
Radko Dinev

1

Potresti immaginare che sia una questione di gusti. Quando si digita sulla riga di comando, potrebbe essere preferibile un'opzione breve, specialmente nel caso di opzioni run-together (ad es. ls -AL ). Le lunghe opzioni sono migliori per trasmettere l'intento, quindi non è necessario consultare la pagina man quando leggi ls --almost-all --dereference.

Naturalmente, mentre acquisisci esperienza, potresti imparare che entrambi -A e -L le opzioni brevi sono sufficientemente conosciute e non richiedono questa documentazione aggiuntiva. Soprattutto in un comando complesso che può combinare diversi comandi in modo interessante con la valutazione, il reindirizzamento, ecc. In tal caso si potrebbe preferire la brevità sulla documentazione.


1

Un altro scopo che posso vedere nell'avere diversi modi di specificare i parametri (breve e lungo) è che quando si digita, alla riga di comando Unix / Linux piace avere il più breve comando possibile. Tuttavia, quelli possono diventare criptici, e se uno script è scritto usando quelle versioni brevi, possono diventare difficili da capire lungo la strada. L'uso della versione lunga può rendere il comando SAME più leggibile e comprensibile da chi non lo è il guru di questo comando, specialmente se questo comando è in realtà uno script scritto localmente in contrasto con un comando ben noto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.