chown 的 -H 和 -L 选项有什么区别?

chown 的 -H 和 -L 选项有什么区别?

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 的通配选项 -*通常与点文件不匹配。)

相关内容