这个例子的实现与“ln -sr”相同吗?

这个例子的实现与“ln -sr”相同吗?

从 coreutils 的手册中得知ln

-r --relative

建立相对于链接位置的符号链接。

例子:

ln -srv /a/file /tmp
’/tmp/file’ -> ’../a/file’

相对符号链接是根据其规范化的包含目录和规范化的目标生成的。即,这些文件名中的所有符号链接都将被解析。请参见第 161 页,第 18.5 节 [真实路径调用],它可以更好地控制相对文件名的生成,如以下示例所示:

ln--relative() {
test "$1" = --no-symlinks && { nosym=$1; shift; }
target="$1";
test -d "$2" && link="$2/." || link="$2"
rtarget="$(realpath $nosym -m "$target" \
--relative-to "$(dirname "$link")")"
ln -s -v "$rtarget" "$link"
}

ln--relative()该示例的实现目的是否与 相同ln -sr?谢谢。

答案1

不,shell 函数ln--remote为您提供了一种创建相对符号链接的方法,其中目标路径将不会已解析符号链接,其中默认情况下 ln -r 会做

它向您展示了如何编写一个函数,该函数使用更多的参数readpath以防万一你确实需要控制输出文件名。

相关内容