Linux常用命令学习笔记:ln

1. 命令概述

  • 命令名称ln (英文全拼:link)
  • 核心功能:为文件创建链接,分为硬链接符号链接(软链接)
  • 主要用途:文件共享、节省存储空间、创建快捷方式、系统管理

2. 语法格式

# 创建硬链接(默认)
ln [选项] 源文件 目标文件

# 创建符号链接
ln -s [选项] 源文件 目标文件

3. 常用选项

选项说明
-s创建符号链接(软链接)
-f强制创建,覆盖已存在的目标文件
-i交互模式,覆盖前询问确认
-v显示详细操作信息
-b为已存在的目标文件创建备份
-d允许超级用户创建目录的硬链接
-n把符号链接视为一般文件
-t指定目标目录
-T将目标文件视为普通文件
--help显示帮助信息
--version显示版本信息

4. 链接类型对比

特性硬链接符号链接(软链接)
本质指向同一 inode 的多个文件名指向源文件路径的特殊文件
inode 号与源文件相同与源文件不同
跨文件系统❌ 不支持✅ 支持
链接目录❌ 不支持(需 root 权限)✅ 支持
源文件删除链接仍然有效链接失效(悬空链接)
文件大小与源文件相同存储路径名的大小
创建命令ln 源文件 目标文件ln -s 源文件 目标文件

5. 常用实例详解

(1) 创建硬链接

# 为 file.txt 创建硬链接 link.txt
ln file.txt link.txt

# 创建硬链接到指定目录
ln file.txt /path/to/link.txt

# 强制创建,覆盖已存在的文件
ln -f file.txt link.txt

# 交互模式,覆盖前询问
ln -i file.txt link.txt

# 显示详细操作信息
ln -v file.txt link.txt

(2) 创建符号链接(软链接)

# 为 file.txt 创建符号链接
ln -s file.txt link.txt

# 创建符号链接到绝对路径
ln -s /path/to/file.txt link.txt

# 创建符号链接到目录
ln -s /path/to/dir/ link_dir

# 强制创建符号链接
ln -sf file.txt link.txt

# 为已存在的目标文件创建备份
ln -sb file.txt link.txt

(3) 批量创建链接

# 为多个文件创建硬链接到指定目录
ln file1.txt file2.txt /target/dir/

# 为多个文件创建符号链接到指定目录
ln -s file1.txt file2.txt /target/dir/

# 使用通配符创建链接
ln -s *.txt /target/dir/

6. 查看链接信息

(1) 查看文件类型

# 查看文件详细信息
ls -l link.txt
# 输出示例:lrwxrwxrwx 1 user user 8 Dec 18 10:00 link.txt -> file.txt

# 查看 inode 号
ls -i file.txt link.txt
# 输出示例:
# 123456 file.txt
# 123456 link.txt   # 硬链接 inode 相同
# 654321 link.txt   # 符号链接 inode 不同

(2) 查看链接指向

# 读取符号链接指向的目标
readlink link.txt

# 查看符号链接的详细信息
file link.txt
# 输出示例:link.txt: symbolic link to file.txt

7. 实际应用场景

场景一:共享配置文件

# 将配置文件链接到用户目录
ln -s /etc/nginx/nginx.conf ~/nginx.conf

# 共享脚本文件
ln -s /usr/local/bin/myscript /home/user/bin/myscript

场景二:版本管理

# 创建当前版本的软链接
ln -sf /opt/app/v2.0 /opt/app/current

# 切换版本时只需修改链接
ln -sf /opt/app/v2.1 /opt/app/current

场景三:系统管理

# 创建日志文件的软链接(便于查看)
ln -s /var/log/nginx/access.log /tmp/nginx_access.log

# 创建常用目录的快捷方式
ln -s /mnt/data/projects ~/projects

场景四:备份与恢复

# 使用硬链接创建快照备份(节省空间)
cp -al /source/dir/ /backup/dir/
# 其中 -l 选项使用硬链接而非复制文件内容

8. 删除链接

(1) 删除硬链接

# 删除硬链接(不影响源文件)
rm link.txt

# 删除所有硬链接后,文件内容才会被释放
rm file.txt

(2) 删除符号链接

# 删除符号链接(不影响源文件)
rm link.txt

# 删除指向目录的符号链接(注意不要加斜杠)
rm link_dir   # 正确
rm link_dir/  # 错误,会删除目录内容

9. 注意事项

  1. 硬链接限制
    • 不能跨文件系统创建硬链接
    • 不能为目录创建硬链接(除非 root 权限)
    • 硬链接与源文件共享 inode,删除源文件不影响硬链接
  2. 符号链接注意事项
    • 符号链接可以跨文件系统
    • 源文件删除后,符号链接会失效(悬空链接)
    • 符号链接的大小是存储的路径名长度
  3. 路径问题
    • 创建符号链接时,建议使用绝对路径,避免相对路径导致的链接失效
    • 移动源文件会导致相对路径的符号链接失效
  4. 权限问题
    • 符号链接的权限是 lrwxrwxrwx,实际权限由目标文件决定
    • 硬链接的权限与源文件相同
  5. 系统目录
    • 不要随意修改系统目录中的链接文件,可能导致系统异常

核心要点总结

  • 硬链接:多个文件名指向同一 inode,节省空间,不能跨文件系统
  • 符号链接:存储目标文件路径,可以跨文件系统,源文件删除后失效
  • 创建命令ln(硬链接)、ln -s(符号链接)
  • 常用选项-s(符号链接)、-f(强制)、-i(交互)、-v(详细)
  • 实际应用:配置文件共享、版本管理、快捷方式、备份快照
  • 删除注意:删除符号链接用 rm,删除硬链接不影响源文件
  • 权限控制:符号链接权限固定为 lrwxrwxrwx,硬链接权限与源文件相同

作 者:南烛
链 接:https://www.itnotes.top/archives/242
来 源:IT笔记
文章版权归作者所有,转载请注明出处!


上一篇
下一篇