如何获取链接目标的完整路径

Nif*_*fle 13 bash symbolic-link bash-scripting

如果我有一个/var/opt/fooln -fs /path/to/target/dir foo. 如何在只看到链接的脚本中获取/path/to/target/dir

我想在脚本中实现的是rm -rf /path/to/target/dir在我做之前ln -fs /path/to/another/dir foo

use*_*686 31

link=/var/opt/foo

target=$(readlink "$link")
Run Code Online (Sandbox Code Playgroud)

$target 现在是链接的目标,就像它存储在文件系统中一样。

但是,符号链接可以是相对的,因此这对于正常使用会更好:

target=$(readlink -f "$link")
Run Code Online (Sandbox Code Playgroud)

请注意,这使用readlink了 GNU Coreutils,它可能不存在于 BSD 和其他系统中。

编辑: readlink -f适用于 BSD,只要链接目标存在。realpath是另一个以类似方式工作的,仅限于 BSD 的工具。