この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 つまたは 1 つ」を意味する正規表現のように動作すると予想できます。残念ながら、そのようなワイルドカードはありませんbash

...extglobシェルオプションを有効にしない限り:

shopt -s extglob

これにより、パターンは?(list)のパターンの0つまたは1つと一致しますlist

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

関連情報