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, -czfspecifica tre bandiere di un solo carattere: c, z, e f.
Ora considera un altro esempio:
tar --exclude
In questo caso, --excludespecifica una singola opzione multicharacter denominata exclude. Il doppio trattino disambigua l'argomento della riga di comando, assicurando che tarinterpreta come excludepiuttosto che una combinazione di e, x, c, l, u, d, e e.
cdrecordmenzionato 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 -lisarispetto a ls --lisa. I primi sono i l, i, s, e adei 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, dde 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.