coreutils 中符号链接选项的使用

coreutils 中符号链接选项的使用

来自 coreutils 手册

2.10 遍历符号链接

当还指定--recursive( ) 选项时,以下选项修改 chown 和 chgrp 遍历层次结构的方式。-R如果指定了多个以下选项,则仅最后一个生效。这些选项指定处理目录的符号链接是否需要仅对符号链接进行操作,还是需要对以该目录为根的层次结构中的所有文件进行操作。

这些选项独立于 --dereference--no-dereference( -h),它们控制是否修改符号链接或其引用。

-H如果指定--recursive( ) 并且命令行参数是目录的符号链接,则遍历它。-R

-L在递归遍历中,遍历遇到的目录的每个符号链接。

-P不要遍历任何符号链接。如果未指定-H-L或 ,则这是默认值-P

  1. 在“这些选项独立于 --dereferenceand --no-dereference( -h),控制是否修改符号链接或其引用”中,“这些选项”和“--dereference--no-dereference”分别做什么,它们有何不同?

  2. -H对和对的描述-L似乎对我说的是同一件事。这两个选项有何不同?

谢谢。

答案1

标志-h(又名--no-dereference)是一个很好用的标志。假设我们有这样的设置:

$ ln -s /etc/passwd /tmp/foobar
$ sudo chown fred /tmp/foobar

因为--dereference是默认值,这实际上会改变/etc/passwd......这可能不是你想要的:-) 该-h标志将使它改变符号链接所有权。因此,您应该养成使用 的习惯-h,特别是在递归更改所有权的情况下。即做chmod -hR而不是chmod -R

-H标志仅适用于您在命令行上列出的目录符号链接。该-L选项适用于找到的所有目录符号链接,包括递归 期间子目录中的符号链接chown

相关内容