it-swarm.it

Cosa significa "-" (doppio trattino)?

Ho visto -- utilizzato nel comando compgen.

Per esempio:

compgen -W "foo bar baz" -- b

Qual è il significato di -- lì dentro?

518
dogbane

Più precisamente, un doppio trattino (--) viene utilizzato nella maggior parte dei comandi incorporati bash e in molti altri comandi per indicare la fine delle opzioni di comando, dopo di che vengono accettati solo i parametri posizionali.

Esempio di utilizzo: supponiamo che tu voglia grep un file per la stringa -v - normalmente -v verrà considerata l'opzione per invertire il significato della corrispondenza (mostra solo le righe che non corrispondono), ma con -- puoi grep per stringa -v come questo:

grep -- -v file
631
Guss

In man bash possiamo leggere nella sezione Comandi incorporati della shell :

Salvo diversamente specificato, ogni comando incorporato documentato in questa sezione come accettazione delle opzioni preceduto da - accetta --per indicare la fine delle opzioni.

Il :, true, false e test i builtin non accettano opzioni e non trattano -- specialmente. I builtin exit, logout, break, continue, let e shift accettano ed elaborano argomenti che iniziano con - senza richiedere --. Altri builtin che accettano argomenti ma non sono specificati come opzioni di accettazione interpretano argomenti che iniziano con - come opzioni non valide e richiedono -- per impedire questa interpretazione.

Nota che echo non interpreta -- per indicare la fine delle opzioni.

48
kenorb

Questo segna la fine dell'elenco dei parametri (opzione).

47
polemon

POSIX.1-2017

12.2 Linee guida per la sintassi dell'utilità

Linea guida 10:

Il primo -- argomento che non è un argomento-opzione dovrebbe essere accettato come delimitatore che indica la fine delle opzioni. Eventuali argomenti seguenti devono essere trattati come operandi, anche se iniziano con '-' carattere.

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02

18
John Doe