Sono nuovo a lavorare nella shell e l'uso di questi comandi sembra arbitrario. C'è un motivo per cui una bandiera ha un trattino singolo e un'altra potrebbe avere un trattino doppio?
Sono nuovo a lavorare nella shell e l'uso di questi comandi sembra arbitrario. C'è un motivo per cui una bandiera ha un trattino singolo e un'altra potrebbe avere un trattino doppio?
Risposte:
Un singolo trattino può essere seguito da più flag a carattere singolo. Un doppio trattino indica una singola opzione multi-carattere.
Considera questo esempio:
tar -czf
In questo esempio, -czf
specifica tre bandiere di un solo carattere: c
, z
, e f
.
Ora considera un altro esempio:
tar --exclude
In questo caso, --exclude
specifica una singola opzione multicharacter denominata exclude
. Il doppio trattino disambigua l'argomento della riga di comando, assicurando che tar
interpreta come exclude
piuttosto che una combinazione di e
, x
, c
, l
, u
, d
, e e
.
cdrecord
menzionato anni fa nei commenti sopra.
Tutto dipende dal programma. Di solito "-" è usato per le opzioni "brevi" (una lettera, -h) e "-" per le opzioni "lunghe" (er) (--help).
Le opzioni brevi di solito possono essere combinate (quindi "-h -a" è uguale a "-ha")
Nei sistemi simili a Unix, il trattino ASCII-meno è comunemente usato per specificare le opzioni. Il personaggio è generalmente seguito da una o più lettere. Un argomento che è un singolo trattino da solo senza lettere di solito specifica che un programma dovrebbe gestire i dati provenienti dall'input standard o inviare i dati all'output standard. Due caratteri trattino-meno (-) vengono utilizzati su alcuni programmi per specificare "opzioni lunghe" in cui vengono utilizzati nomi di opzioni più descrittivi. Questa è una caratteristica comune del software GNU.
È davvero una convention. Tuttavia, può aiutare i parser a conoscere in modo più efficiente le opzioni passate al programma. Inoltre, ci sono utilità ordinate che possono aiutare ad analizzare questi comandi, come getopt(3)
o non standard getopt_long(3)
per analizzare gli argomenti di un programma.
È bello, perché possiamo avere più opzioni brevi combinate, come dicono altre risposte, come tar -xzf myfile.tar.gz
.
Se ci fosse un argomento "Lisa" per ls
, probabilmente avrebbe un significato diverso da digitare ls -lisa
rispetto a ls --lisa
. I primi sono i l
, i
, s
, e a
dei parametri, non la parola.
In effetti, potresti scrivere ls -l -i -s -a
, intendendo esattamente lo stesso di ls -lisa
, ma ciò dipenderebbe dal programma.
Ci sono anche programmi che non obbediscono a questa convenzione. Soprattutto per la mia vista, dd
e gcc
.
opzioni brevi con trattino singolo vs opzioni lunghe con trattino doppio
le opzioni brevi possono essere combinate in un singolo argomento;
for example: ls -lrt #instead of ls -l -r -t
Se consentiamo opzioni lunghe con trattino singolo, si crea ambiguità. Per risolvere questo, usiamo il doppio trattino per le opzioni lunghe.