如何通过多个符号链接找到原始文件?

如何通过多个符号链接找到原始文件?

我遇到过符号链接指向其他符号链接的情况,导致我必须运行多个 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

相关内容