我正在 bash shell 中尝试以下 glob:
$ ls -d .*
. .. .a .ab
$ ls .a*
.a .ab
$ ls .[!.]*
.a .ab
$ ls .[!.]?*
.ab
最后一个表达式不应该表示“一个点后跟一个非点,后跟零个或多个字符”吗?为什么匹配失败.a
?
答案1
你误会了。它的意思是“一个点后跟一个非点,后跟一个字符,后跟零个或多个字符”。.a
没有足够的字符来匹配它。
但实际上,只需设置即可dotglob
。
我正在 bash shell 中尝试以下 glob:
$ ls -d .*
. .. .a .ab
$ ls .a*
.a .ab
$ ls .[!.]*
.a .ab
$ ls .[!.]?*
.ab
最后一个表达式不应该表示“一个点后跟一个非点,后跟零个或多个字符”吗?为什么匹配失败.a
?
你误会了。它的意思是“一个点后跟一个非点,后跟一个字符,后跟零个或多个字符”。.a
没有足够的字符来匹配它。
但实际上,只需设置即可dotglob
。