printf %s\\n "$-"
Irá listar as opções de letra única em uma única sequência.
Esse parâmetro também pode ser usado como:
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
Para primeiro desabilitar a -f
expansão nome do arquivo de shell e salvar simultaneamente um valor para $-
- se houver - em $1
. Em seguida, nenhum globs ocorre e a +f
expansão do último nome de arquivo é ativada novamente e, possivelmente, também desativada.
Por exemplo, se a -f
expansão ilename já estava desativada quando o valor de $-
foi salvo pela primeira vez, seu valor salvo seria (pelo menos) :
f
E assim, quando set
é executado novamente, funciona:
set +f -f
O que apenas o coloca de volta onde você começou.
set +o
Irá listar todas set
as opções de shell da tabela (consulte a resposta de Jason para asshopt
opções capazes - isso é uma palavra? -) em um formato que seja seguro para a reinserção do shell. Dessa forma, você também pode fazer:
state=$(set +o)
set -some -crazy -options
eval "$state"
Para salvar, alterar e restaurar o estado das opções do shell, respectivamente.
Para manipular shopt
íons e set
opções de tabela de uma só vez:
state=$(set +o;shopt)
#do what you want with options here
eval "$state"
Você também pode chamar set
sem argumentos para adicionar uma lista de todas as variáveis definidas no momento do shell - também citadas para reinserção no shell. E você pode - no bash - adicionar adicionalmente o comando typeset -fp
para incluir também todas as funções shell declaradas no momento. Você pode agrupar tudo junto e eval
quando estiver pronto. Você pode até ligar alias
sem argumentos para mais do mesmo. Isso ... pode cobrir, no entanto. Eu acho que existe "$@"
- o que você teria que colocar em uma bash
matriz primeiro, suponho, antes de fazer set
.
Não, há também trap
. Este é um pouco engraçado. Geralmente:
trap 'echo this is my trap' 0
(echo this is my subshell; trap)
... apenas imprimirá este é o meu subshell porque o subshell é um novo processo e obtém seu próprio conjunto de trap
s - e, portanto, não herda nenhum trap
s, exceto aqueles que seu pai ignorou explicitamente - (como trap '' INT
) .
Contudo:
trap 'echo this is my trap' 0
save_traps=$(trap)
trap
se comporta especialmente quando é o primeiro e único comando executado em um subshell de substituição de comando, na medida em que reproduz uma lista do shell pai atualmente definido traps
em um formato que é citado para reentrada segura no shell. E assim você pode fazer o save_traps
, em seguida, set
sem argumentos - e todo o resto já foi mencionado - a praticamente obter um bloqueio em todo o estado shell. Você pode adicionar export -p
e readonly -p
restaurar explicitamente os atributos originais do shell var.
Enfim, isso é o suficiente.
set +o
eshopt
? (como ashopt
capacidade de ser uma palavra,settable
é usada na página de homem, assimshoptable
funciona para mim)shopt
iões, isto é,state=$(set +o;shopt -p)
Na
man
página:imprimirá uma lista de todas as opções ativadas.
fonte
set
eshopt
?set
é muito mais extenso: consulte a entrada da página de manual .shopt <option>
huponexit
). maneira simples de corrigir éshopt | grep on$
Para listar todas as opções:
Para inspecionar uma opção específica:
Tome a opção
verbose
como exemplo:fonte
Opções ?: Existem três grupos de opções no bash.
As opções lidas ou definidas pelo comando
set
.(use este comando para o manual
LESS=+/'set \[--abefhkmnptuvxBCEHPT\]' man bash
:)Todas as opções de uma letra:
abefhkmnptuvxBCEHPT
Também as opções (que não têm uma única letra equivalente):
As opções lidas ou definidas pelo comando
shopt
.(leia o manual com este comando
LESS=+/'shopt \[-pqsu\]' man bash'
:)A lista é bastante longa, mas fácil de imprimir, use:
ou similar (mas não igual):
As opções que podem ser definidas na invocação:
(comando para o manual:
LESS=+/'^INVOCATION' man bash
)Todas as
set
opções:Todas as
shopt
opçõesAlgumas opções que são significativas apenas quando o INVOKING bash:
E também (opções longas):
Todas as
set
opções de uma letra e-ri
são impressas com$-
.Por exemplo:
Chamar o bash como um shell de login é relatado apenas com o shopt:
Portanto:
A opção
-n
não pode ser testada por nenhum código, pois significa: não execute nenhum código.Opções de impressão
A melhor ferramenta para listar as opções do shell em execução , as definidas com
set
ou as definidas com,shopt
é a mesmashopt
. Para listar opções definidas:O que age exatamente como
set -o
. Useshopt -po
para obter o mesmo resultado queset +o
.Para listar opções de compras:
Das quais você pode optar por imprimir os definidos
shopt -ps
ou nãoshopt -pu
Para obter todas as opções. Tanto quanto possível, muitas opções longas e algumas (
-sDc
) em INVOCATION não podem ser impressas:Para armazená-los em uma variável:
E a variável pode ser usada para retroceder todas as opções:
fonte
Para inspecionar uma opção específica:
fonte