我需要发出几个命令来跟踪一系列符号链接到达最终目标。
是否有一个命令可以一步完成此操作?
which updatedb
/usr/bin/updatedb
ls -l /usr/bin/updatedb
lrwxrwxrwx 1 root root 26 2010-09-01 16:22 /usr/bin/updatedb -> /etc/alternatives/updatedb
ls -l /etc/alternatives/updatedb
lrwxrwxrwx 1 root root 25 2010-09-01 16:21 /etc/alternatives/updatedb -> /usr/bin/updatedb.mlocate
ls -l /usr/bin/updatedb.mlocate
-rwxr-xr-x 1 root root 34492 2010-03-24 21:16 /usr/bin/updatedb.mlocate
答案1
使用readlink -e <linkfile>
。请参阅 readlink 的手册页以获取有关其论点的更多信息。
答案2
您可以使用readlink -e
@htorque 中提到的,它是默认安装的。但是,如果您执行了类似操作ln -s a a
,readlink -e a
则不会给出任何输出,这与readlink b
在b
普通文件中执行的操作相同。
如果您安装了该软件包chase
(sudo apt-get install chase
,以“追逐符号链接”命名),您将获得更多信息丰富的输出。
$ chase a
chase: /tmp/a: symlink loop detected, giving up...
$ chase b
/tmp/b
并且可以详细运行它:
$ chase --verbose /opt/python/3
/opt/python/3
-> 3.6
-> 3.6.2
/opt/python/3.6.2
显示中间环节