从chown
联机帮助页:
The following options modify how a hierarchy is traversed when the -R option is also specified. If more than one is specified, only the final one takes effect.
-H if a command line argument is a symbolic link to a directory, traverse it
-L traverse every symbolic link to a directory encountered
-P do not traverse any symbolic links (default)
-H
和选项之间的确切区别是什么-L
?据我了解,-H
仅当将该目录指定为参数时才允许目录符号链接遍历,-L
在任何情况下都会遍历所有目录符号链接。 (这些选项仅在chown
使用该-R
选项递归调用时适用。在非递归模式下,始终遍历指定为参数的目录符号链接。)这是否正确?
答案1
您的理解是正确的;这些选项匹配相同中的选项find
。
因此
chown -R .
或者
chown -R -P .
递归地更改所有者,而不取消引用任何符号链接;
chown -R -H *
递归地更改所有者,取消引用当前目录中的任何符号链接(因为它们最终成为参数的一部分)但是
chown -R -H .
仍然没有取消引用任何符号链接,最后
chown -R -L .
chown -R -L *
两者都取消引用符号。
(作为上面示例的旁白,请注意.
和*
不一定会产生相同的结果,具体取决于 shell 的通配选项 -*
通常与点文件不匹配。)