printf %s\\n "$-"
Enumerará las opciones de letra única en una sola cadena.
Ese parámetro también se puede usar como:
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
Para deshabilitar -fprimero la expansión de nombre de archivo de shell al mismo tiempo que guarda un valor para $-, si lo hay, en $1. A continuación, no se producen globs, y la última +fexpansión de ilename vuelve a estar habilitada y posiblemente también deshabilitada.
Por ejemplo, si la -fexpansión de nombre de archivo ya estaba deshabilitada cuando $-se guardó por primera vez el valor , entonces su valor guardado sería (al menos) :
f
Y así, cuando setse ejecuta de nuevo, funciona para:
set +f -f
Lo que simplemente te devuelve a donde empezaste.
set +o
Enumerará todas setlas opciones de shell de la tabla (consulte la respuesta de Jason para las shoptopciones de ¿es una palabra?) En una forma segura para el reingreso de shell. De esa manera, también puedes hacer:
state=$(set +o)
set -some -crazy -options
eval "$state"
Para guardar, cambiar y restaurar el estado de las opciones de shell respectivamente.
Para manejar shoptiones y setopciones de tabla de una vez:
state=$(set +o;shopt)
#do what you want with options here
eval "$state"
También puede llamar set sin ningún argumento para agregar una lista de todas las variables establecidas actualmente en el shell, también citadas para volver a ingresar al shell. Y puede, en bash, agregar adicionalmente el comando typeset -fppara incluir también todas las funciones de shell declaradas actualmente. Puede agruparlo todo junto y evalcuando esté listo. Incluso puede llamar aliassin argumentos para más de lo mismo. Eso ... podría cubrirlo, sin embargo. Supongo que sí "$@", lo cual tendrías que poner bashprimero en una matriz, supongo, antes de hacerlo set.
No, también hay trap. Este es un poco divertido. Generalmente:
trap 'echo this is my trap' 0
(echo this is my subshell; trap)
... solo imprimirá esta es mi subshell porque la subshell es un proceso nuevo y obtiene su propio conjunto de traps, por lo que no hereda ninguna traps sino aquellas que su padre ha ignorado explícitamente (como trap '' INT) .
Sin embargo:
trap 'echo this is my trap' 0
save_traps=$(trap)
trapse comporta especialmente cuando es el primer y único comando ejecutado en un subshell de sustitución de comandos en el sentido de que reproducirá una lista del shell primario actualmente configurado trapsen un formato que se cita para un reingreso seguro al shell. Y para que pueda hacer eso save_traps, luego set sin argumentos, y todo el resto ya mencionado, para obtener un bloqueo en todo el estado de shell. Sin embargo, es posible que desee agregar explícitamente export -py readonly -prestaurar los atributos var de shell originales.
De todos modos, eso es suficiente.
set +oyshopt? (en cuanto ashoptser una palabra,settablese usa en la página de manual, así queshoptablefunciona para mí)shoptiones, es decirstate=$(set +o;shopt -p)De la
manpágina:imprimirá una lista de todas las opciones habilitadas.
fuente
setyshopt?setes mucho más extenso: consulte la entrada de la página de manual .shopt <option>huponexit). forma sencilla de arreglar esshopt | grep on$Para enumerar todas las opciones:
Para inspeccionar una opción específica:
Tome la opción
verbosecomo ejemplo:fuente
¿Opciones ?: Hay tres grupos de opciones en bash.
Las opciones leídas o establecidas por el comando
set.(Utilizar este comando para el manual:
LESS=+/'set \[--abefhkmnptuvxBCEHPT\]' man bash)Todas las opciones de una letra:
abefhkmnptuvxBCEHPTTambién las opciones (que no tienen una letra equivalente):
Las opciones leídas o establecidas por el comando
shopt.(Lea el manual con este comando:
LESS=+/'shopt \[-pqsu\]' man bash')La lista es bastante larga pero fácil de imprimir, utilice:
o similar (pero no igual):
Las opciones que se podrían establecer en invocación:
(comandos para el manual:
LESS=+/'^INVOCATION' man bash)Todas las
setopciones:Todas las
shoptopcionesAlgunas opciones que solo son significativas al invocar bash:
Y, también (opciones largas):
Todas las
setopciones de una letra y-rise imprimen con$-.Por ejemplo:
Llamar a bash como un shell de inicio de sesión solo se informa con shopt:
Así:
La opción
-nno puede ser probada por ningún código, ya que significa: no ejecute ningún código.Opciones de impresión
La mejor herramienta para enumerar las opciones del shell en ejecución , ya sea las que están configuradas
seto las que están configuradas,shoptes la mismashopt. Para enumerar las opciones establecidas:Que actúa exactamente como
set -o. Useshopt -popara obtener el mismo resultado queset +o.Para enumerar las opciones de compras:
De los cuales puede elegir imprimir los que están configurados
shopt -pso noshopt -puPara obtener todas las opciones. Tanto como sea posible, muchas opciones largas y algunos (
-sDc) en INVOCATION no se pueden imprimir:Para almacenarlos en una variable:
Y la variable podría usarse para retrasar todas las opciones:
fuente
Para inspeccionar una opción específica:
fuente