為什麼問號在這個 glob 中不起作用?

為什麼問號在這個 glob 中不起作用?

我在下面的全局做錯了什麼?根據我的閱讀,它看起來應該有效手冊

A '? (不在括號之間)符合任何單一字元。

$ 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,因此該模式保持未展開狀態。

您可能會期望它像在正規表示式中一樣工作,它的意思是“零個或前一個表達式之一”。不幸的是, 中沒有這樣的通配符bash

....除非您啟用extglobshell 選項:

shopt -s extglob

然後該模式?(list)將與 中的零個或一個模式相符list

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

相關內容