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