最近当我做了类似的事情mv ./* ../somedirectory
并发现文件.gitignore
没有移动时,我感到很惊讶
。
我的大部分工作都是在 OS X 上的 zsh 中完成的,而这个惊喜让我在 CentOS 上的 bash 中感到惊讶。我在 OS X 上尝试了 bash 并发现了相同的行为:*
与点文件不匹配。这对我来说似乎很不受欢迎,但显然这是 bash 的默认设置。(这可能也是我记得的所有 zsh 默认值,但我可能在几年前在我的 .zshrc 中更改了它并忘记了它的工作方式不同。)
如何将 bash 配置为按我预期的方式运行:用于 * 匹配所有文件,而不是忽略点文件。
如果这完全不清楚,这里是如何重现它
cd /tmp
mkdir {t,d}est
touch test/{.,}{1,2,3,4,5,6,7}
ls -hal test
mv test/* dest
ls -hal test # notice dot files are still there
ls -hal dest # notice only some files were mv'ed
Run Code Online (Sandbox Code Playgroud) 我 cd 到我的主目录并输入
ls *bash*
Run Code Online (Sandbox Code Playgroud)
期望它会显示包含“bash”的文件列表。然而事实并非如此。
同时,键入
ls .bash*
Run Code Online (Sandbox Code Playgroud)
作品。
根据文档,*
代表任何字符,对吗?但.
在这种情况下,它似乎并不代表。怎么了?