
最近在看chmod的手册时,看到
chmod 不能改变符号链接文件的权限,而是改变链接文件指向的原文件的权限, 而在递归遍历目录时会忽略符号链接(软链接)文件,也不会改变它指向的原文件的属性, 然后测试的时候发现参数dir/和dir/*的效果不太一样。
参数dir/会忽略dir和它子目录下的链接; 参数dir/*会忽略dir字母下的链接,但会该变dir下的链接指向的文件的权限;
自己猜测可能dir/*表示的不是一个参数而是多个,有文件也有目录也有链接,只有在递归这些参数中的目录(比如subdir)时,才会忽略其中(subdir)的链接,而dir下的链接还是会改变它指向的文件的属性。 而dir/则表示一个参数,所以会忽略dir及其子目录下的链接文件。不知道我这样理解对吗?
1 wbgbg 2018-07-31 17:10:40 +08:00 *是 shell 处理的,shell 会把 dir/* 翻译成 dir/a dir/b dir/c 这样的东西,再传给 chmod 作为参数。所以你传给 chmod 的参数实际上已经没有 dir 这个目录,只有 dir 里的路径了。 |
2 taobao92307 2018-08-01 10:14:14 +08:00 ls 书得对,*在 shell 会自动扩展。 |