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