현재 bash 세션에서 extglob이 활성화되어 있는지 확인하는 방법은 무엇입니까?


10

bash 터미널이 열려 있습니다. 값을 변경하기 전에이 세션에서 extglob 옵션이 활성화되어 있는지 여부를 확인하고 싶습니다. 어떻게해야합니까?


2
궁금하지 않으면 확인할 필요가 없습니다. 당신이 그것을 원한다면 그냥 실행 shopt -s extglob하거나, 원한다면 그것을 실행하십시오 shopt -u extglob. 원래 있던지 여부에 관계없이 아무런 차이가 없습니다.
terdon

답변:


16

그냥 실행 :

$ shopt extglob

현재 상태를 반환합니다 :

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

모든 옵션을 표시하려면 다음을 실행하십시오.

$ shopt

이것은 스크립팅에도 사용될 수 있으며, 반환 상태는 옵션 세트 또는 설정 해제를 나타내지 만 메시지는 표준 출력을 엉망으로 만듭니다.
cuonglm

12

shopt -q 사용 :

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

-q옵션은 shopt출력 을 버리고 상태를 반환하여 옵션이 설정 또는 설정 해제되었음을 나타냅니다.

참고 shopt만에 나타날 수있는 옵션을보고 BASHOPTS변수는, 그 옵션에 유효하지 않은 set명령을 내장.

에 유효 set하거나에 나타날 수있는 옵션을 확인하려면 다음을 SHELLOPTS사용하십시오 shopt -qo.

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

2
왜 안돼 shopt extglob?
terdon

1
출력이 표준을 엉망으로 만들고 싶지 않기 때문에 :)
cuonglm

무슨 소리 야? 내가 알 수있는 한, OP는 옵션이 설정되어 있는지 여부를 확인하려고합니다. 그들은 이것이 터미널에 있다고 언급하므로 스크립트의 일부인지 의심 스럽습니다. 어쨌든 차이점은 무엇입니까? 둘 다 shopt extglob와 당신의 접근 방식이 stdout에 기록됩니다. 당신은 생각하고 shopt -q extglob && shopt -u extglob || shopt -s extglob있습니까?
terdon

@ terdon : 글쎄, 내 접근 방식은 내가 원할 때만 stdout에 씁니다 . 일반적인 접근 방식은 shopt -q extglob && : Code when enable || : Code when disable입니다.
cuonglm

3
사용자의 기존 설정을 유지하려고 시도하지만 특정 방법으로 설정하지 않으면 중단되는 중요한 코드가있을 수있는 스크립트를 작성하는 것을 상상할 수 있습니다. 이는 잠재적으로 다른 상태가 필요한 중요한 작업을 수행 한 후 현재 상태를 자동으로 결정하고 저장 한 후 최대한 빨리 복원하는 방법을 제안합니다.
Monty Harder

6

bash에는 두 가지 옵션 목록이 있습니다. 에 대한 shopt하나 set.

옵션 extglobshopt목록에 속합니다 .
그 값이 하나를 사용하여 인쇄 될 수있다 shopt extglobshopt -p extglob.

같은 옵션 nounsetset목록에 속합니다 .
그 값을 사용하여 인쇄 될 수있다 shopt -op nounsetshopt -o nounset.

하나의 옵션을 확인하십시오.

shopt에 대한 특정 옵션을 변경하지 않고 인쇄하려면 shopt -p name다음을 사용하십시오 .

$ shopt -p xpg_echo
shopt -u xpg_echo

그리고 대한 set사용 : shopt -po name(예, 당신은 사용할 수 있습니다 shopt -op에 대한 set목록).

$  shopt -po xtrace
set +o xtrace

옵션을 나열하십시오.

shopt의 모든 옵션을 나열하려면 shopt(또는 재사용 가능 shopt -p)을 사용하십시오.
또한 shopt -s또는 shopt -u사용될 수있다.

모든 옵션을 나열하는 방법 setset -o(관련 :) set +o입니다.
또는 : shopt -o에 해당 set -o하고 shopt -op이다 set +o.

설명서

보낸 사람 LESS=+/'^ *shopt \[' man bash:

옵션이 없거나 -p 옵션을 사용하면 설정 가능한 모든 옵션 목록이 표시됩니다. optname 인수없이 -s 또는 -u를 사용하면 표시는 각각 설정 또는 설정 해제 된 옵션으로 제한됩니다.

보낸 사람 LESS=+/'^ *set \[' man bash:

option-name없이 -o를 제공하면 현재 옵션의 값이 인쇄됩니다. option-name없이 + o가 제공되면 현재 옵션 설정을 다시 작성하기위한 일련의 set 명령이 표준 출력에 표시됩니다.

$ 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 -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

shopt -op실제로 어떤 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.