我遇到过符号链接指向其他符号链接的情况,导致我必须运行多个 ls 命令来尝试跟踪基本文件的存储位置。例如,如果我想知道在 centos 上运行的 java 程序的位置,我通常从 /bin/java 开始,并且必须深入 3-4 个符号链接才能找到实际文件的位置。
是否有一个简单的干净命令可以沿着所有符号链接进行跟踪,直到找到真正的文件并给我基本文件的位置?
答案1
使用realpath
,它将展开所有符号链接,直到文件目标。
例如,对我来说:
> ls -al /usr/bin/java
lrwxrwxrwx 1 root root 22 Jul 13 2019 /usr/bin/java -> /etc/alternatives/java
> realpath /usr/bin/java
/usr/lib64/jvm/java-11-openjdk-11/bin/java
单独readlink
给出直接目标,同时readlink -f
给出最终文件:
> readlink /usr/bin/java
/etc/alternatives/java
> readlink -f /usr/bin/java
/usr/lib64/jvm/java-11-openjdk-11/bin/java