Jak się dowiedzieć, czy extglob jest włączony w bieżącej sesji bash?
10
Mam otwarty terminal bashowy. Chcę zmienić, czy opcja extglob jest włączona lub wyłączona w tej sesji, zanim zmienię jej wartość. W jaki sposób mogę to zrobić?
Pamiętaj, że nie musisz sprawdzać, chyba że jesteś ciekawy. Jeśli shopt -s extglobchcesz to włączyć, po prostu uruchom lub, jeśli chcesz to wyłączyć, uruchom shopt -u extglob. Nie ma znaczenia, czy było początkowo, czy nie.
terdon
Odpowiedzi:
16
Po prostu biegnij:
$ shopt extglob
Zwróci bieżący status:
$ shopt extglob
extglob on
$ shopt -u extglob
$ shopt extglob
extglob off
Aby wyświetlić wszystkie opcje, wystarczy uruchomić:
Co masz na myśli? O ile wiem, OP chce sprawdzić, czy opcja jest ustawiona, czy nie. Wspominają, że jest to terminal, więc wątpię, że jest to część skryptu. A poza tym, jaka jest różnica? Zarówno shopt extglobtwoje podejście napisze na standardowe wyjście. Czy myślisz o shopt -q extglob && shopt -u extglob || shopt -s extglob?
terdon
@terdon: Cóż, moje podejście pisze tylko na standardowe wyjście, jeśli chcę . Ogólne podejście brzmi shopt -q extglob && : Code when enable || : Code when disable.
cuonglm
3
Mogę sobie wyobrazić napisanie skryptu, który próbowałby zachować istniejące ustawienia użytkownika, ale może mieć krytyczny fragment kodu, który się zepsuje, jeśli nie zostanie ustawiony konkretny sposób. Sugeruje to metodę cichego określenia bieżącego stanu, zapisania go i przywrócenia go JAK NAJSZYBCIEJ po wykonaniu kluczowych operacji, które wymagają potencjalnie innego stanu.
Monty Harder
6
Istnieją dwie listy opcji w bash. Jeden za shopti jeden za set.
Opcja extglobnależy do shoptlisty.
Jego wartość może być wydrukowane za pomocą jednej shopt extgloblub shopt -p extglob.
Opcja taka nounsetnależy do setlisty.
Jego wartość można wydrukować za pomocą shopt -op nounsetlub shopt -o nounset.
Zaznacz jedną opcję.
Aby wydrukować określoną opcję (bez jej zmiany) dla shopt, użyj shopt -p name:
$ shopt -p xpg_echo
shopt -u xpg_echo
I dla set, użyj: shopt -po name(tak, możesz użyć shopt -opdo setlisty).
$ shopt -po xtraceset+o xtrace
Opcje listy
Aby wyświetlić wszystkie opcje z shopt, użyj shopt(lub wielokrotnego użytku shopt -p).
Również shopt -slub shopt -umoże być użyty.
Sposób wyświetlenia wszystkich opcji setto set -o(związany set +o:).
Lub: shopt -ojest równoważne set -oi shopt -opma set +o.
podręcznik
Od LESS=+/'^ *shopt \[' man bash:
Bez opcji lub z opcją -p wyświetlana jest lista wszystkich ustawialnych opcji. Jeśli użyto opcji -s lub -u bez argumentów nazwy optycznej, wyświetlanie jest ograniczone do tych opcji, które są odpowiednio ustawione lub wyłączone.
Od LESS=+/'^ *set \[' man bash:
Jeśli podano -o bez nazwy-opcji, drukowane są wartości bieżących opcji. Jeśli podano + o bez nazwy-opcji, na standardowym wyjściu wyświetlana jest seria poleceń set do odtworzenia bieżących ustawień opcji.
Przykłady
$ 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
chcesz to włączyć, po prostu uruchom lub, jeśli chcesz to wyłączyć, uruchomshopt -u extglob
. Nie ma znaczenia, czy było początkowo, czy nie.Odpowiedzi:
Po prostu biegnij:
Zwróci bieżący status:
Aby wyświetlić wszystkie opcje, wystarczy uruchomić:
źródło
Użyj shopt -q :
-q
opcja powodujeshopt
odrzucenie wyjścia i zwraca status, aby wskazać, że opcje zostały ustawione lub wyłączone.Zauważ, że
shopt
zgłasza tylko opcje, które mogą pojawić się wBASHOPTS
zmiennej, opcje te nie są prawidłowe dlaset
wbudowanego polecenia.Aby sprawdzić opcje, które są ważne
set
lub mogą się pojawiaćSHELLOPTS
, użyjshopt -qo
:źródło
shopt extglob
?shopt extglob
twoje podejście napisze na standardowe wyjście. Czy myślisz oshopt -q extglob && shopt -u extglob || shopt -s extglob
?shopt -q extglob && : Code when enable || : Code when disable
.Istnieją dwie listy opcji w bash. Jeden za
shopt
i jeden zaset
.Opcja
extglob
należy doshopt
listy.Jego wartość może być wydrukowane za pomocą jednej
shopt extglob
lubshopt -p extglob
.Opcja taka
nounset
należy doset
listy.Jego wartość można wydrukować za pomocą
shopt -op nounset
lubshopt -o nounset
.Zaznacz jedną opcję.
Aby wydrukować określoną opcję (bez jej zmiany) dla shopt, użyj
shopt -p name
:I dla
set
, użyj:shopt -po name
(tak, możesz użyćshopt -op
doset
listy).Opcje listy
Aby wyświetlić wszystkie opcje z shopt, użyj
shopt
(lub wielokrotnego użytkushopt -p
).Również
shopt -s
lubshopt -u
może być użyty.Sposób wyświetlenia wszystkich opcji
set
toset -o
(związanyset +o
:).Lub:
shopt -o
jest równoważneset -o
ishopt -op
maset +o
.podręcznik
Od
LESS=+/'^ *shopt \[' man bash
:Od
LESS=+/'^ *set \[' man bash
:Przykłady
I
Warto wspomnieć o tym,
shopt -op
które faktycznie wyświetlaset
opcje:źródło