Bash:.*被认为对匹配点文件有害。为什么?

时间:2020-01-09 10:37:20  来源:igfitidea点击:

如何使用bash shell在Unix/Linux下匹配点文件?
在bash shell下匹配点文件时,为什么.*被认为是有害的?

"简短回答":
*与目录中的特殊链接..匹配,您的命令最终将应用于父目录。
这可能会导致意外结果。
因此,".*"被认为是有害的。

如果想在名为/home/theitroad/projects的目录中的所有点文件上运行chmomd/chown或find命令。
在$HOME/projects /中键入以下命令以匹配所有点文件:

chmod -R 0444 .*

或者

chown -R user:group .*

这将更改当前目录和父目录中的权限,因为" .."将与".*"匹配。
这可能会导致与安全性相关的意外问题以及其他一些问题。
许多Linux/Unix命令都提供了一种对文件进行递归处理的选项。
在这个例子中,-R选项将匹配父目录的当前和所有子目录。
如果您有数千个文件,则可能会导致灾难。
从此类问题恢复和清洁可能很耗时。
使用以下语法来匹配点文件:

chmod -R 0444 .[^.]*

或者

chown -R user:group .[^.]*

或者

ls -R .[^.]*

或者

find . -iname ".[^.]*" -print

或者

find . -iname ".[^.]*" -ls