이 glob에서 물음표가 작동하지 않는 이유는 무엇입니까?

이 glob에서 물음표가 작동하지 않는 이유는 무엇입니까?

아래 글로벌에서 내가 뭘 잘못하고 있니? 내가 읽은 바에 따르면 작동해야 할 것 같습니다.수동.

ㅏ'? '(대괄호 사이 아님)은 단일 문자와 일치합니다.

$ touch file.txt file.text
$ ls file.*
file.text  file.txt
$ ls file.te?xt
ls: cannot access 'file.te?xt': No such file or directory

$ bash --version
GNU bash, version 5.0.3(1)-release (x86_64-pc-linux-gnu)

답변1

?단일 문자 와 일치합니다 ( .정규 표현식과 마찬가지로). 패턴과 일치하는 파일이 없으므로 file.te?xt패턴이 확장되지 않은 상태로 유지됩니다.

"이전 표현식 중 0개 또는 하나"를 의미하는 정규 표현식처럼 작동할 것으로 예상할 수 있습니다. 불행하게도 에는 그러한 와일드카드가 없습니다 bash.

... extglob쉘 옵션을 활성화하지 않는 한:

shopt -s extglob

그러면 패턴은 ?(list)의 패턴 중 0개 또는 하나와 일치합니다 list.

$ shopt -s extglob
$ ls file.t?(e)xt
file.text file.txt

관련 정보