![查看所有 Bash/Shell 脚本相关的常见问题解答](https://www.alaica.com/wp-content/uploads/linux-121.png)
如何使用bash shell 在 Unix/Linux 下匹配点文件?为什么.*在 bash shell 下匹配点文件时被认为是有害的?
简短的回答-.*匹配目录中的特殊“..”链接,您的命令最终会应用到父目录。这可能会产生意想不到的结果。因此,.*被认为是有害的。
长答案- 比如说,您想对 /home/example/projects 目录中的所有点文件运行 chmomd/chown 或 find 命令。您在 $HOME/projects/ 中键入以下命令来匹配所有点文件:
教程详情 | |
---|---|
难度级别 | 简单的 |
根权限 | 不 |
要求 | 重击 |
美东时间。阅读时间 | 1分钟 |
chmod -R 0444 .*
或者
chown -R user:group .*
这将更改当前目录和父目录中的权限,..与.*. 这可能会导致意外的安全相关问题和其他一些问题。许多 Linux / Unix 命令提供了递归处理文件的选项。在此示例中,该-R选项将匹配当前目录和父目录的所有子目录。如果您有数千个文件,这可能会导致灾难。恢复和清理此类问题可能非常耗时。使用以下语法来匹配点文件:
chmod -R 0444 。[ ^. ] *
或者
chown -R用户:组 。[ ^. ] *
或者
ls -R。[ ^. ] *
或者
寻找。-iname ".[^.]*" -print
或者
寻找。-iname ".[^.]*" -ls