起初我认为这是一个巧合,但现在我看到它甚至有一个标签:所有隐藏的文件名都以点开头。这是公约吗?为什么被选中?可以改变吗?或者换句话说(作为一个相关的问题@evilsoup 建议暗示对一堆其他人的答案):我可以隐藏文件而不重命名它们(.
用作其名称的第一个字符)?
最近当我做了类似的事情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)