从 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
以防万一你确实需要更控制输出文件名。