¿Cómo saber si extglob está habilitado en la sesión bash actual?
9
Tengo una terminal de bash abierta. Quiero saber si la opción extglob está habilitada o deshabilitada en esta sesión, antes de cambiar su valor. ¿Cómo puedo hacer esto?
Tenga en cuenta que no es necesario verificarlo a menos que tenga curiosidad. Si lo desea, simplemente ejecute shopt -s extglobo, si lo desea, ejecute shopt -u extglob. No hace ninguna diferencia si estaba encendido originalmente o no.
terdon
Respuestas:
15
Solo corre:
$ shopt extglob
Devolverá el estado actual:
$ shopt extglob
extglob on
$ shopt -u extglob
$ shopt extglob
extglob off
Para mostrar todas las opciones, simplemente ejecute:
Este también se puede usar para crear secuencias de comandos, su estado de retorno también indica la opción configurada o no, pero el mensaje desordenará el estándar.
-qla opción hacer shoptdescartar la salida y devolver el estado para indicar que las opciones están configuradas o no.
Tenga en cuenta que shoptsolo informa las opciones que pueden aparecer en BASHOPTSvariable, esas opciones no son válidas para el setcomando incorporado.
Para verificar las opciones que son válidas seto pueden aparecer en SHELLOPTS, use shopt -qo:
¿Qué quieres decir? Por lo que puedo decir, el OP quiere verificar si la opción está configurada o no. Mencionan que esto está en una terminal, así que dudo que sea parte de un script. Y, de todos modos, ¿cuál es la diferencia? Ambos shopt extgloby su enfoque escribirán en stdout. ¿Está pensando shopt -q extglob && shopt -u extglob || shopt -s extglob?
terdon
@terdon: Bueno, mi enfoque solo escribo en stdout si quiero . El enfoque general es shopt -q extglob && : Code when enable || : Code when disable.
Cuonglm
3
Me imagino escribiendo un script que intentaría preservar la configuración existente del usuario, pero podría tener un código crítico que se romperá si no se configura de una manera particular. Esto sugiere un método para determinar silenciosamente el estado actual, guardarlo y restaurarlo lo antes posible después de realizar las operaciones cruciales que requieren un estado potencialmente diferente.
Monty Harder
5
Hay dos listas de opciones en bash. Uno para shopty otro para set.
La opción extglobpertenece a la shoptlista.
Su valor puede imprimirse utilizando shopt extglobo shopt -p extglob.
Una opción como nounsetpertenece a la setlista.
Su valor puede imprimirse usando shopt -op nounseto shopt -o nounset.
Marque una opción.
Para imprimir una opción específica (sin cambiarla) para shopt, use shopt -p name:
$ shopt -p xpg_echo
shopt -u xpg_echo
Y para set, use: shopt -po name(sí, puede usar shopt -oppara la setlista).
$ shopt -po xtrace
set+o xtrace
Lista de opciones.
Para enumerar todas las opciones de shopt, use shopt(o reutilizable shopt -p).
También shopt -so shopt -upodría ser utilizado.
La forma de enumerar todas las opciones setes con set -o(relacionado:) set +o.
O: shopt -oes equivalente a set -oy shopt -opes a set +o.
Manual
De LESS=+/'^ *shopt \[' man bash:
Sin opciones, o con la opción -p, se muestra una lista de todas las opciones configurables. Si se utiliza -s o -u sin argumentos de nombre de opción, la visualización se limita a aquellas opciones que están configuradas o no, respectivamente.
De LESS=+/'^ *set \[' man bash:
Si -o se proporciona sin nombre de opción, se imprimen los valores de las opciones actuales. Si + o se suministra sin nombre de opción, en la salida estándar se muestra una serie de comandos establecidos para recrear la configuración de opciones actual.
Ejemplos
$ set-o
allexport off
braceexpand on
emacs on
errexit off
errtrace off
functrace off
hashall on
histexpand on
history on
ignoreeof off
interactive-comments on
keyword off
monitor on
noclobber off
noexec off
noglob off
nolog off
notify off
nounset off
onecmd off
physical off
pipefail off
posix off
privileged off
verbose off
vi off
xtrace off
shopt -s extglob
o, si lo desea, ejecuteshopt -u extglob
. No hace ninguna diferencia si estaba encendido originalmente o no.Respuestas:
Solo corre:
Devolverá el estado actual:
Para mostrar todas las opciones, simplemente ejecute:
fuente
Use shopt -q :
-q
la opción hacershopt
descartar la salida y devolver el estado para indicar que las opciones están configuradas o no.Tenga en cuenta que
shopt
solo informa las opciones que pueden aparecer enBASHOPTS
variable, esas opciones no son válidas para elset
comando incorporado.Para verificar las opciones que son válidas
set
o pueden aparecer enSHELLOPTS
, useshopt -qo
:fuente
shopt extglob
?shopt extglob
y su enfoque escribirán en stdout. ¿Está pensandoshopt -q extglob && shopt -u extglob || shopt -s extglob
?shopt -q extglob && : Code when enable || : Code when disable
.Hay dos listas de opciones en bash. Uno para
shopt
y otro paraset
.La opción
extglob
pertenece a lashopt
lista.Su valor puede imprimirse utilizando
shopt extglob
oshopt -p extglob
.Una opción como
nounset
pertenece a laset
lista.Su valor puede imprimirse usando
shopt -op nounset
oshopt -o nounset
.Marque una opción.
Para imprimir una opción específica (sin cambiarla) para shopt, use
shopt -p name
:Y para
set
, use:shopt -po name
(sí, puede usarshopt -op
para laset
lista).Lista de opciones.
Para enumerar todas las opciones de shopt, use
shopt
(o reutilizableshopt -p
).También
shopt -s
oshopt -u
podría ser utilizado.La forma de enumerar todas las opciones
set
es conset -o
(relacionado:)set +o
.O:
shopt -o
es equivalente aset -o
yshopt -op
es aset +o
.Manual
De
LESS=+/'^ *shopt \[' man bash
:De
LESS=+/'^ *set \[' man bash
:Ejemplos
Y
Vale la pena mencionar acerca de
shopt -op
cuál realmente enumera lasset
opciones:fuente