Risposte:
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 -v
sarà 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 -v
questo modo:
grep -- -v file
--
funziona per separare le opzioni dalle espressioni regolari in grep
, ma il modo canonico è usare -e
/ --regexp
.
--
, sebbene tu abbia ragione nel notare che il mio esempio sopra potrebbe anche essere scritto come grep -e -v file
(sebbene sia molto confuso).
bash
comandi integrati accettano --
come indicatore di fine opzione. [
e echo
non ad esempio ( uno dei motivi echo
non può essere utilizzato in modo affidabile ).
In man bash
possiamo 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
, etest
builtins non accettano le opzioni e non trattare--
in modo speciale. Ilexit
,logout
,break
,continue
,let
, eshift
builtins 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
echo
non interpreta--
per indicare la fine delle opzioni.
man bash
(nota per sé per la prossima volta:).
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. Tutti gli argomenti seguenti devono essere trattati come operandi, anche se iniziano con il-
carattere " ".
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
set
integrato, dove è assolutamente necessario.