Nif*_*fle 13 bash symbolic-link bash-scripting
如果我有一个/var/opt/foo用ln -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 的工具。