命令行参数 dir/* 和 dir/ 有什么不同?

2018-07-31 17:03:01 +08:00
 skai0dev

最近在看chmod的手册时,看到

chmod 不能改变符号链接文件的权限,而是改变链接文件指向的原文件的权限,
而在递归遍历目录时会忽略符号链接(软链接)文件,也不会改变它指向的原文件的属性,

然后测试的时候发现参数dir/dir/*的效果不太一样。

参数dir/会忽略dir和它子目录下的链接; 参数dir/*会忽略dir字母下的链接,但会该变dir下的链接指向的文件的权限;

自己猜测可能dir/*表示的不是一个参数而是多个,有文件也有目录也有链接,只有在递归这些参数中的目录(比如subdir)时,才会忽略其中(subdir)的链接,而dir下的链接还是会改变它指向的文件的属性。 而dir/则表示一个参数,所以会忽略dir及其子目录下的链接文件。不知道我这样理解对吗?

2574 次点击
所在节点    Linux
2 条回复
wbgbg
2018-07-31 17:10:40 +08:00
*是 shell 处理的,shell 会把 dir/* 翻译成 dir/a dir/b dir/c 这样的东西,再传给 chmod 作为参数。所以你传给 chmod 的参数实际上已经没有 dir 这个目录,只有 dir 里的路径了。
taobao92307
2018-08-01 10:14:14 +08:00
ls 书得对,*在 shell 会自动扩展。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/475712

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX