在 Debian(以及其它 Linux 发行版)里,“软连接(symbolic link,符号链接)”本身只是一个指向另一个文件/目录的“指针”。所谓“找源头”,一般有两种理解,我分别说一下:
ls -lls -l 软连接名
例如:
ls -l /usr/bin/python
输出类似:
lrwxrwxrwx 1 root root 9 6月 1 10:00 /usr/bin/python -> python3
说明 /usr/bin/python 指向 python3
readlinkreadlink 软连接名
示例:
readlink /usr/bin/python
输出:
python3
如果想看到绝对路径:
readlink -f 软连接名
readlink -f /usr/bin/python
# 输出:/usr/bin/python3.11
filefile 软连接名
示例:
file /usr/bin/python
输出:
/usr/bin/python: symbolic link to python3
这个稍微麻烦一点,因为系统不会自动记录“谁指向我”。
find 全盘搜索(不推荐大系统)find / -type l -exec readlink {} \; | grep 目标文件
或者更精确:
find / -type l -ilname '*目标名*' 2>/dev/null
示例:找指向 python3 的软连接
find / -type l -exec sh -c 'readlink "{}" | grep -q python3 && echo {}' \;
namei(看路径链路)namei -l /usr/bin/python
能看到一层层链接关系。
Debian 很多“软连接”其实是 alternatives 管理的:
update-alternatives --list python
或:
ls -l /etc/alternatives/python
这类软连接链通常是:
/usr/bin/python -> /etc/alternatives/python -> /usr/bin/python3.11
| 目的 | 命令 |
|---|---|
| 看软连接指向 | ls -l |
| 看真实路径 | readlink -f |
| 看链接类型 | file |
| 看链接链 | namei -l |
| 反向找软连接 | find + readlink |
| Debian 管理链接 | update-alternatives |
如果你有具体路径或场景(比如“我想找 /usr/bin/xxx 的源头”或“被入侵了想查恶意软链”),可以直接贴出来,我可以帮你写精确命令。