O que significa “-” (duplo traço)? (também conhecido como "duplo traço nu")

382

Eu vi -- usado no comando compgen .

Por exemplo:

compgen -W "foo bar baz" -- b

Qual é o significado do -- lá?

    
por dogbane 15.04.2011 / 14:39

4 respostas

465

Mais precisamente, um traço duplo ( -- ) é usado nos comandos internos do bash e em muitos outros comandos para significar as opções de fim de comando, após as quais somente parâmetros posicionais são aceitos.

Exemplo de uso: digamos que você queira grep um arquivo para a string -v - normalmente -v será considerada a opção para inverter o significado correspondente (apenas mostrar linhas que não combinam), mas com -- você pode grep para a string -v assim:

grep -- -v file
    
por 15.04.2011 / 15:13
40

Isto marca o final da lista de parâmetros (opção).

link

    
por 15.04.2011 / 14:43
29

Em man bash , podemos ler na seção Comandos internos do Shell :

Unless otherwise noted, each builtin command documented in this section as accepting options preceded by - accepts -- to signify the end of the options.

The :, true, false, and test builtins do not accept options and do not treat -- specially. The exit, logout, break, continue, let, and shift builtins accept and process arguments beginning with - without requiring --. Other builtins that accept arguments but are not specified as accepting options interpret arguments beginning with - as invalid options and require -- to prevent this interpretation.

Note that echo does not interpret -- to mean the end of options.

    
por 01.03.2015 / 15:36
2

POSIX.1-2017

12.2 Utility Syntax Guidelines

Guideline 10:

The first -- argument that is not an option-argument should be accepted as a delimiter indicating the end of options. Any following arguments should be treated as operands, even if they begin with the '-' character.

link

    
por 30.06.2018 / 16:29