下のグローバルで私は何が間違っていますか?私が読んだところによると、うまくいくはずです。手動。
ㅏ'? '(角括弧の間ではない)は、単一の文字と一致します.
$ 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