bash路径全局匹配dotfiles和pwd中的parent


1

命令

$ chmod -R 700 ./.*

搜索并尝试chmod上面的文件和目录pwd。为什么?

预期结果:考虑pwd就是/home/user,我希望第一个../.*与被替换/home/user。然后我希望chmodrecursively(-R)适用于所有以dot(.*)开头的文件/home/user,所以:$ chmod -R 700 /home/user/.*all all。

我得到了一些错误:

chmod: cannot access `./../otheruser/file': Permission denied

这是因为..比赛.*吗?

Answers:


6

./.*也匹配./..,导致chmod -R尝试递归所有内容..

添加:

如果您只想要当前目录中的点文件和目录,请尝试.[!.]*,它匹配以开头的所有内容.并且后面至少有一个非点字符。

如果你想在你的当前目录树中的任何位置的所有点文件,可以使用find如下所示使用$(...)命令替换粘贴的输出find返回到命令行作为参数chmod

chmod 700 $(find -name ".[!.]*")

谢谢。然后,我如何递归地更改homedir中所有文件和目录的所有权/权限,而不是递归..。我的意思是,/*也是匹配/..。所以你知道我怎么不接..
德米特里·明科夫斯基


谢谢妮可。那些很好,我也喜欢cd ..; chmod -R [MODE] /directory
德米特里·明科夫斯基
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.