Bash 通配隐藏文件

3le*_*gos 3 bash wildcards

我正在 bash shell 中尝试以下 globs:

$ ls -d .*
.  ..  .a  .ab
$ ls .a*
.a  .ab
$ ls .[!.]*
.a  .ab
$ ls .[!.]?*
.ab
Run Code Online (Sandbox Code Playgroud)

最后一个表达式不应该表示“一个点后跟一个非点后跟零个或多个字符”吗?为什么匹配失败.a

Ign*_*ams 5

你误会了。它的意思是“一个点后跟一个非点后跟一个字符后跟零个或多个字符”。.a没有足够的字符来匹配它。

但实际上,只需设置dotglob.