Command-Line

如何通過多個符號連結找到原始文件?

  • October 23, 2020

我遇到過符號連結指向其他符號連結的情況,這導致我不得不執行多個 ls 命令來嘗試跟踪基本文件的儲存位置。例如,如果我想知道在 centos 上執行的 java 程序的位置,我通常從 /bin/java 開始,並且必須深入 3-4 個符號連結才能找到實際文件的位置。

是否有一個簡單的 clean 命令可以跟踪所有符號連結,直到找到一個真實文件並給我基本文件的位置?

使用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

引用自:https://unix.stackexchange.com/questions/616064