做什么
给文件 / 目录建链接。
两种链接
| 类型 | 创建 | 特点 |
|---|---|---|
| 软链接 / 符号链接 | ln -s src link |
像快捷方式,存路径;源删了变死链;可跨文件系统;可链接目录 |
| 硬链接 | ln src link |
同一份数据多个名字;源删了仍能访问;不能跨文件系统;不能链接目录 |
实战
# 软链接(更常用)
ln -s /var/log/nginx/access.log ~/nginx-log
# 硬链接
ln /home/file.txt /tmp/file-alt
# 改链接指向(先删再建)
ln -sfn /new/target ~/link # -f 覆盖 -n 不进目录
# 看链接指向
ls -l link
readlink link
readlink -f link # 解析所有中间,给最终绝对路径
典型应用
# 1. 切换软件版本
sudo ln -sf /usr/local/bin/python3.12 /usr/local/bin/python
# 2. 把日志聚到一处
mkdir ~/logs
ln -s /var/log/nginx/access.log ~/logs/nginx.log
ln -s /var/log/mysql/error.log ~/logs/mysql.log
# 3. dotfiles 用 git 管,用 ln 链接到家
mv ~/.bashrc ~/dotfiles/bashrc
ln -s ~/dotfiles/bashrc ~/.bashrc
坑
- 软链接是"小文件"——指向字符串路径。源移动 → 死链
- 硬链接不能跨文件系统——
/home和/var在不同分区时不行 - 硬链接不能给目录建(防止环)—— 软链接可以
- 死链检测:
find /tmp -xtype l