创建指向另一个符号链接的最终目标的符号链接

创建指向另一个符号链接的最终目标的符号链接

假设有一个符号链接命名A

如果我执行这个:

ln A B -s

然后 B 指向 A,创建了一系列符号链接:B->A->some

有没有ln直接链接到最终目标,无需明确写出?即可获得B->some

我会用 readlink 这样做:

ln "$(readlink A -f)" B -s

但我认为应该存在一些选项,只需使用 即可ln

答案1

该选项在“标准”中不存在ln;目标路径始终被视为文字字符串,不进行其他处理。

但是,如果符号链接指向绝对路径(即readlink A== readlink -f A),则可以复制而是符号链接:

cp -a A B

(这也适用于相对符号链接如果两个符号链接都在同一个目录中,以及其他一些有限的情况。)

此外,在 GNU Coreutils 中ln,您可以使用-r/--relative选项来实现这一点:

ln -s -r A B

(顾名思义,这将始终导致相对的建立符号链接 – 即使原始路径指向绝对路径。如果还有一个相反的选项可以将相对输入转换为绝对目标,那就太好了,但目前还没有。)

相关内容