Woher wissen Sie, ob extglob in der aktuellen Bash-Sitzung aktiviert ist?
9
Ich habe ein Bash-Terminal geöffnet. Ich möchte herausfinden, ob die Option extglob in dieser Sitzung aktiviert oder deaktiviert ist, bevor ich ihren Wert ändere. Wie kann ich das machen?
Beachten Sie, dass Sie nur dann nachsehen müssen, wenn Sie neugierig sind. Wenn Sie es aktivieren möchten, führen Sie es einfach aus shopt -s extgloboder, wenn Sie es deaktivieren möchten, führen Sie es aus shopt -u extglob. Es macht überhaupt keinen Unterschied, ob es ursprünglich eingeschaltet war oder nicht.
Terdon
Antworten:
15
Lauf einfach:
$ shopt extglob
Es wird der aktuelle Status zurückgegeben:
$ shopt extglob
extglob on
$ shopt -u extglob
$ shopt extglob
extglob off
Um alle Optionen anzuzeigen, führen Sie einfach Folgendes aus:
Dieser kann auch für die Skripterstellung verwendet werden. Sein Rückgabestatus zeigt auch an, dass die Option gesetzt oder nicht gesetzt ist, aber die Nachricht wird den Standard durcheinander bringen.
-qMit dieser Option können Sie die shoptAusgabe verwerfen und den Status zurückgeben, um anzuzeigen, dass die Optionen aktiviert oder deaktiviert sind.
Beachten Sie, dass shoptnur Optionen gemeldet BASHOPTSwerden, die in Variablen setangezeigt werden können. Diese Optionen sind für den integrierten Befehl nicht gültig .
Verwenden Sie Folgendes, um nach Optionen zu suchen, die für Folgendes gültig setsind oder darin angezeigt werden können :SHELLOPTSshopt -qo
Weil ich nicht möchte, dass die Ausgabe meinen Standard
durcheinander bringt
Was meinst du? Soweit ich das beurteilen kann, möchte das OP prüfen, ob die Option gesetzt ist oder nicht. Sie erwähnen, dass sich dies in einem Terminal befindet, daher bezweifle ich, dass es Teil eines Skripts ist. Und was ist überhaupt der Unterschied? Beide shopt extglobund Ihr Ansatz schreiben an stdout. Denken Sie an shopt -q extglob && shopt -u extglob || shopt -s extglob?
Terdon
@terdon: Nun, mein Ansatz schreibt nur an stdout, wenn ich will . Der allgemeine Ansatz ist shopt -q extglob && : Code when enable || : Code when disable.
Cuonglm
3
Ich kann mir vorstellen, ein Skript zu schreiben, das versucht, die vorhandene Einstellung des Benutzers beizubehalten, aber möglicherweise einen kritischen Code enthält, der beschädigt wird, wenn er nicht auf eine bestimmte Weise festgelegt wird. Dies schlägt eine Methode vor, um den aktuellen Status stillschweigend zu ermitteln, zu speichern und so schnell wie möglich wiederherzustellen, nachdem die entscheidenden Vorgänge ausgeführt wurden, für die möglicherweise ein anderer Status erforderlich ist.
Monty Harder
5
Es gibt zwei Listen mit Optionen in Bash. Eins für shoptund eins für set.
Die Option extglobgehört zur shoptListe.
Sein Wert kann entweder mit shopt extgloboder gedruckt werden shopt -p extglob.
Eine Option wie nounsetgehört zur setListe.
Sein Wert kann mit shopt -op nounsetoder gedruckt werden shopt -o nounset.
Aktivieren Sie eine Option.
Verwenden Sie Folgendes, um eine bestimmte Option (ohne sie zu ändern) für shopt zu drucken shopt -p name:
$ shopt -p xpg_echo
shopt -u xpg_echo
Und für set, verwenden Sie: shopt -po name(ja, Sie können shopt -opfür setListe verwenden).
$ shopt -po xtrace
set+o xtrace
Optionen auflisten.
Verwenden Sie shopt(oder wiederverwendbar shopt -p) , um alle Optionen von shopt aufzulisten .
Auch shopt -soder shopt -ukönnte verwendet werden.
Die Möglichkeit, alle Optionen aufzulisten, setist mit set -o(verwandt :) set +o.
Oder: shopt -oist gleichbedeutend mit set -ound shopt -opist zu set +o.
Handbuch
Von LESS=+/'^ *shopt \[' man bash:
Ohne Optionen oder mit der Option -p wird eine Liste aller einstellbaren Optionen angezeigt. Wenn entweder -s oder -u ohne optname-Argumente verwendet wird, ist die Anzeige auf die Optionen beschränkt, die festgelegt bzw. nicht festgelegt sind.
Von LESS=+/'^ *set \[' man bash:
Wenn -o ohne Optionsnamen angegeben wird, werden die Werte der aktuellen Optionen gedruckt. Wenn + o ohne Optionsnamen angegeben wird, wird in der Standardausgabe eine Reihe von Set-Befehlen zum Wiederherstellen der aktuellen Optionseinstellungen angezeigt.
Beispiele
$ 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
oder, wenn Sie es deaktivieren möchten, führen Sie es ausshopt -u extglob
. Es macht überhaupt keinen Unterschied, ob es ursprünglich eingeschaltet war oder nicht.Antworten:
Lauf einfach:
Es wird der aktuelle Status zurückgegeben:
Um alle Optionen anzuzeigen, führen Sie einfach Folgendes aus:
quelle
Verwenden Sie shopt -q :
-q
Mit dieser Option können Sie dieshopt
Ausgabe verwerfen und den Status zurückgeben, um anzuzeigen, dass die Optionen aktiviert oder deaktiviert sind.Beachten Sie, dass
shopt
nur Optionen gemeldetBASHOPTS
werden, die in Variablenset
angezeigt werden können. Diese Optionen sind für den integrierten Befehl nicht gültig .Verwenden Sie Folgendes, um nach Optionen zu suchen, die für Folgendes gültig
set
sind oder darin angezeigt werden können :SHELLOPTS
shopt -qo
quelle
shopt extglob
?shopt extglob
und Ihr Ansatz schreiben an stdout. Denken Sie anshopt -q extglob && shopt -u extglob || shopt -s extglob
?shopt -q extglob && : Code when enable || : Code when disable
.Es gibt zwei Listen mit Optionen in Bash. Eins für
shopt
und eins fürset
.Die Option
extglob
gehört zurshopt
Liste.Sein Wert kann entweder mit
shopt extglob
oder gedruckt werdenshopt -p extglob
.Eine Option wie
nounset
gehört zurset
Liste.Sein Wert kann mit
shopt -op nounset
oder gedruckt werdenshopt -o nounset
.Aktivieren Sie eine Option.
Verwenden Sie Folgendes, um eine bestimmte Option (ohne sie zu ändern) für shopt zu drucken
shopt -p name
:Und für
set
, verwenden Sie:shopt -po name
(ja, Sie könnenshopt -op
fürset
Liste verwenden).Optionen auflisten.
Verwenden Sie
shopt
(oder wiederverwendbarshopt -p
) , um alle Optionen von shopt aufzulisten .Auch
shopt -s
odershopt -u
könnte verwendet werden.Die Möglichkeit, alle Optionen aufzulisten,
set
ist mitset -o
(verwandt :)set +o
.Oder:
shopt -o
ist gleichbedeutend mitset -o
undshopt -op
ist zuset +o
.Handbuch
Von
LESS=+/'^ *shopt \[' man bash
:Von
LESS=+/'^ *set \[' man bash
:Beispiele
Und
Es ist erwähnenswert,
shopt -op
welcheset
Optionen tatsächlich aufgelistet sind :quelle