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

dso*_*len 0 command-line symlink command

我遇到过符号链接指向其他符号链接的情况,导致我不得不运行多个 ls 命令来尝试跟踪基本文件的存储位置。例如,如果我想知道在 centos 上运行的 java 程序的位置,我通常从 /bin/java 开始,并且在找到实际文件的位置之前必须深入 3-4 个符号链接。

是否有一个简单的 clean 命令可以跟踪所有符号链接,直到找到一个真正的文件并给我基本文件的位置?

tha*_*isp 5

使用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
Run Code Online (Sandbox Code Playgroud)

readlink单独给出直接目标,同时readlink -f给出最终文件:

> readlink /usr/bin/java
/etc/alternatives/java
> readlink -f /usr/bin/java
/usr/lib64/jvm/java-11-openjdk-11/bin/java
Run Code Online (Sandbox Code Playgroud)