Cosa significa "-" (doppio trattino)? (noto anche come "doppio trattino nudo")


Risposte:


583

Più precisamente, un doppio trattino ( --) viene utilizzato nei comandi integrati 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 -vsarà considerata l'opzione per invertire il significato della corrispondenza (mostra solo le linee che non corrispondono), ma con --te puoi grep per la stringa in -vquesto modo:

grep -- -v file

3
Soprattutto nel Bash setintegrato, dove è assolutamente necessario.
l0b0

10
--funziona per separare le opzioni dalle espressioni regolari in grep, ma il modo canonico è usare -e/ --regexp.
l0b0

5
@ l0b0: il modello da cercare è normalmente uno dei parametri posizionali, quindi può adattarsi dopo il --, sebbene tu abbia ragione nel notare che il mio esempio sopra potrebbe anche essere scritto come grep -e -v file(sebbene sia molto confuso).
Guss,

2
Non tutti i bashcomandi integrati accettano --come indicatore di fine opzione. [e echonon ad esempio ( uno dei motivi echonon può essere utilizzato in modo affidabile ).
Stéphane Chazelas,

44

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


39

In man bashpossiamo leggere nella sezione Comandi integrati Shell :

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

I :, true, false, e testbuiltins non accettano le opzioni e non trattare --in modo speciale. Il exit, logout, break, continue, let, e shiftbuiltins accettare e gli argomenti di processo a cominciare -senza richiedere --. Altri builtin che accettano argomenti ma che non sono specificati come opzioni di accettazione interpretano gli argomenti che iniziano con -come opzioni non valide e richiedono --di impedire questa interpretazione.

Si noti che echonon interpreta --per indicare la fine delle opzioni.


2
+1 per riferimento man bash(nota per sé per la prossima volta:).
user3773048,

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.