技术解析

命令行参数 dir/* 和 dir/ 有什么不同?
0
2021-06-23 13:29:21
idczone

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

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

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

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

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


*是 shell 处理的,shell 会把 dir/* 翻译成 dir/a dir/b dir/c 这样的东西,再传给 chmod 作为参数。所以你传给 chmod 的参数实际上已经没有 dir 这个目录,只有 dir 里的路径了。

ls 书得对,*在 shell 会自动扩展。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服