Geçerli bash oturumunda extglob'un etkin olup olmadığını nasıl anlayabilirim?


10

Bir bash terminalim açık. Değerini değiştirmeden önce extglob seçeneğinin bu oturumda etkin mi yoksa devre dışı mı olduğunu öğrenmek istiyorum. Bunu nasıl yapabilirim?


2
Merak etmedikçe kontrol etmeye gerek olmadığını unutmayın. İsterseniz, çalıştırın shopt -s extglobveya isterseniz, çalıştırın shopt -u extglob. Başlangıçta olsun ya da olmasın hiçbir fark yaratmaz.
terdon

Yanıtlar:


16

Sadece koş:

$ shopt extglob

Mevcut durumu döndürür:

$ shopt extglob 
extglob         on
$ shopt -u extglob 
$ shopt extglob 
extglob         off

Tüm seçenekleri göstermek için şunu çalıştırın:

$ shopt

Bu, komut dosyası oluşturma için de kullanılabilir, dönüş durumu da seçenek ayarını veya ayarını kaldırmayı gösterir, ancak mesaj standart çıkışı bozar.
cuonglm

12

Shopt -q kullanın :

shopt -q extglob && echo enable || echo disable

-qseçenek shoptçıktısı çıkar ve seçeneklerin ayarlandığını veya ayarlandığını göstermek için durumu döndürür.

O Not shoptsadece görünebilecek seçenekleri raporları BASHOPTSdeğişken, bu seçenekler için geçerli değildir setyerleşik komutu.

Geçerli olan setveya içinde görünebilecek seçenekleri kontrol etmek için şunu SHELLOPTSkullanın shopt -qo:

$ bash --posix -c 'shopt -qo posix && echo enable || echo disable'
enable

2
Neden sadece shopt extglob?
terdon

1
Çıktının standart
çıkışımı bozmasını

Ne demek istiyorsun? Anlayabildiğim kadarıyla, OP seçeneğin ayarlanıp ayarlanmadığını kontrol etmek istiyor. Bunun bir terminalde olduğundan söz ediyorlar, bu yüzden bir senaryonun parçası olduğundan şüpheliyim. Her neyse, fark nedir? Hem shopt extglobsizin hem de yaklaşımınız stdout'a yazacak. Düşünüyor musun shopt -q extglob && shopt -u extglob || shopt -s extglob?
terdon

@terdon: Benim yaklaşımım sadece istersem stdout'a yazar . Genel yaklaşım shopt -q extglob && : Code when enable || : Code when disable.
cuonglm

3
Kullanıcının mevcut ayarını korumaya çalışacak bir komut dosyası yazmayı hayal edebiliyorum, ancak belirli bir yol ayarlanmadığında kırılacak kritik bir kod parçasına sahip olabilirim. Bu, potansiyel olarak farklı bir durum gerektiren önemli işlemleri gerçekleştirdikten sonra mevcut durumu sessizce belirlemek, kaydetmek ve ASAP'yi geri yüklemek için bir yöntem önerir.
Monty Harder

6

Bash'de iki seçenek listesi vardır. Biri shoptve biri için set.

Seçenek listeye extglobaittir shopt.
Değeri ya shopt extglobya kullanılarak basılabilir shopt -p extglob.

Gibi bir seçenek listeye nounsetaittir set.
Bu değer kullanılarak basılabilir shopt -op nounsetya da shopt -o nounset.

Bir seçeneği işaretleyin.

Çekim için belirli bir seçeneği (değiştirmeden) yazdırmak için şunu kullanın shopt -p name:

$ shopt -p xpg_echo
shopt -u xpg_echo

Ve şunu setkullanın: shopt -po name(evet, liste shopt -opiçin kullanabilirsiniz set).

$  shopt -po xtrace
set +o xtrace

Liste seçenekleri.

Shopt'taki tüm seçenekleri listelemek için shopt(veya yeniden kullanılabilir shopt -p) tuşunu kullanın .
Ayrıca shopt -sveya shopt -ukullanılabilir.

Yolu tüm seçenekler listesi için setbirlikte olduğunu set -o(related: set +o).
Veya: shopt -oeşittir set -ove shopt -opeşittir set +o.

Manuel

Gönderen LESS=+/'^ *shopt \[' man bash:

Seçenek yoksa veya -p seçeneğiyle, tüm ayarlanabilir seçeneklerin bir listesi görüntülenir, -s veya -u seçeneklerinden biri opname bağımsız değişkeni olmadan kullanılırsa, ekran sırasıyla ayarlanmış veya ayarlanmamış seçeneklerle sınırlıdır.

Gönderen LESS=+/'^ *set \[' man bash:

-O seçenek adı olmadan verilirse, geçerli seçeneklerin değerleri yazdırılır. Seçenek adı olmadan + o sağlanırsa, standart çıktıda geçerli seçenek ayarlarını yeniden oluşturmak için bir dizi ayar komutu görüntülenir.

Örnekler

$ 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

Ve

$  shopt -sp
shopt -s checkwinsize
shopt -s cmdhist
shopt -s expand_aliases
shopt -s extglob
shopt -s extquote
shopt -s force_fignore
shopt -s histappend
shopt -s histverify
shopt -s interactive_comments
shopt -s progcomp
shopt -s promptvars
shopt -s sourcepath

Hangilerinin seçenekleri shopt -oplistelediğinden bahsetmeye değer set:

$ shopt -op
set +o allexport
set -o braceexpand
set -o emacs
set +o errexit
set +o errtrace
set +o functrace
set -o hashall
set -o histexpand
set -o history
set +o ignoreeof
set -o interactive-comments
set +o keyword
set -o monitor
set +o noclobber
set +o noexec
set +o noglob
set +o nolog
set +o notify
set +o nounset
set +o onecmd
set +o physical
set +o pipefail
set +o posix
set +o privileged
set +o verbose
set +o vi
set +o xtrace
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.