Answers:
link=/var/opt/foo
target=$(readlink "$link")
$target
现在是链接的目标,与存储在文件系统中的链接完全相同。
但是,符号链接可以是相对的,因此对于正常使用来说会更好:
target=$(readlink -f "$link")
请注意,这是readlink
来自GNU Coreutils的,在BSD和其他系统中可能不存在。
编辑: readlink -f
只要链接目标存在,就可以在BSD上使用。realpath
是另一种仅以BSD运行的工具,其工作方式类似。
-f
,并且readlink -f
效果也一样(假设链接目标存在)。在BSD中,realpath
似乎是的另一种选择readlink -m
。
一种方法是(我希望有一个更好的版本)
olddir=$(pwd)
cd /var/opt/foo
deleteme=$(pwd)
cd $olddir
rm -rf "$olddir"
readlink
是你的朋友。
readlink()
自4.2BSD以来,BSD就有了系统调用。当前的BSDreadlink
实用程序随FreeBSD 4.10一起发布。它被(重新)实现为stat
命令的硬链接(MacOS X手册页 FreeBSD 9手册页)。请注意,它没有-m
选项。