当前位置:首页>Linux>Linux命令每日一清单051:ln--创建链接命令速查表

Linux命令每日一清单051:ln--创建链接命令速查表

  • 2026-10-11 08:41:53
Linux命令每日一清单051:ln--创建链接命令速查表

ln是Linux/Unix系统中用于创建链接(link)的命令,它支持两种类型的链接:硬链接(hard link)和符号链接(symbolic link,也称软链接)。链接是Linux文件系统的重要特性,它允许一个文件拥有多个名称,或者在文件系统中创建指向其他文件/目录的引用。

硬链接本质上是同一文件数据的多个目录项,共享相同的inode,删除一个硬链接不影响其他硬链接;符号链接则是一个指向目标路径的特殊文件,类似于Windows的快捷方式。掌握ln是理解Linux文件系统结构和进行文件组织管理的重要技能。

1. 基本语法

命令说明
ln TARGET LINK_NAME
创建硬链接
ln -s TARGET LINK_NAME
创建符号链接(软链接)
ln -sf TARGET LINK_NAME
创建或覆盖符号链接
ln TARGET... DIRECTORY
在目录中为多个目标创建硬链接
ln -s TARGET... DIRECTORY
在目录中为多个目标创建符号链接

2. 符号链接

符号链接是一个指向目标路径的特殊文件,可以跨文件系统,可以指向目录。

命令说明
ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/app
启用Nginx虚拟主机配置
ln -s /usr/bin/python3 /usr/local/bin/python
创建python别名链接
ln -s /opt/myapp /usr/local/bin/myapp
将程序链接到PATH目录
ln -s /path/to/target .
在当前目录中创建指向目标的符号链接
ln -sf /new/target existing_link
更新现有符号链接指向新目标
ln -sr /path/to/target linkname
创建相对路径符号链接

3. 硬链接

硬链接是同一文件数据的额外目录项,共享inode。它们不能跨文件系统,不能链接到目录(普通用户权限下)。

命令说明
ln source.txt hardlink.txt
为文件创建硬链接
ln file1.txt file2.txt /backup/
在目录中为多个文件创建硬链接
ln -v source.txt link.txt
创建链接时显示详细信息
ln -f existing.txt newlink.txt
强制覆盖已存在的目标文件

硬链接特点:

  • 共享相同inode,指向同一数据块
  • 删除一个硬链接不影响其他硬链接
  • 所有硬链接都被删除后,数据才真正删除
  • 不能跨文件系统(设备/分区)
  • 不能给目录创建硬链接(除非特权用户)

4. 链接选项

选项说明
-s
--symbolic
-f
--force
-b
--backup
-i
--interactive
-n
--no-dereference
-v
--verbose
-r
--relative
-T
--no-target-directory
-t
--target-directory

5. 查看与验证链接

命令说明
ls -l linkname
显示链接及其目标(l开头表示符号链接)
ls -la /path/
列出所有条目(包括隐藏符号链接)
readlink linkname
打印符号链接的目标路径
readlink -f linkname
打印完全解析后的绝对路径
stat linkname
显示完整元数据(包括inode和链接计数)
file linkname
识别路径是否为符号链接
find . -type l
查找当前目录下所有符号链接
find . -xtype l
查找损坏/悬空的符号链接
find . -type l -exec test ! -e {} \; -print
查找断开的符号链接

6. 实用组合模式

命令说明
ln -sf $(which python3) /usr/local/bin/python
使用which动态获取目标路径
for f in *.txt; do ln "$f" "${f%.txt}_link.txt"; done
批量为txt文件创建硬链接
ln -rs /usr/share/doc /home/user/docs
创建相对路径符号链接
cp -s /path/to/target/* .
使用cp -s为多个文件创建符号链接
find . -type l -exec readlink -f {} \;
解析所有符号链接的绝对路径
ln -sfT /new/target linkname
创建链接,将target视为普通文件(避免目录相关警告)
ln -b -sT /new/target linkname
创建链接并备份现有文件

7. 硬链接 vs 符号链接对比

特性硬链接符号链接
本质
同一数据的额外目录项
指向路径的特殊文件
inode
与目标相同
独立的inode
跨文件系统
不支持
支持
链接目录
不支持(普通用户)
支持
原文件删除后
其他硬链接仍有效
成为悬空(断开)链接
体积
不占用额外空间(仅目录项)
占用少量空间(存储路径字符串)
磁盘空间显示
所有硬链接视为同一文件
链接本身大小极小
查看命令ls -i
查看inode
readlink
读取目标
典型用例
备份/快照、节省空间
快捷方式、版本管理

8. 常用选项速查

选项完整名称说明
-s
--symbolic
创建符号链接
-f
--force
强制覆盖目标文件
-b
--backup
覆盖前备份
-i
--interactive
覆盖前提示确认
-n
--no-dereference
将目录符号链接视为文件
-v
--verbose
显示详细信息
-r
--relative
创建相对路径链接
-T
--no-target-directory
始终将LINK_NAME视为普通文件
-t
--target-directory
指定目标目录
-S
--suffix
指定备份后缀

9. 故障排查

问题解决方法
ln: failed to create hard link: File exists
目标文件已存在,使用-f强制覆盖;或先删除目标文件
Too many levels of symbolic links
存在循环符号链接,使用readlink -f跟踪完整路径检查
Invalid cross-device link
硬链接不能跨文件系统,改用符号链接:ln -s
Broken symlink (dangling)
目标路径已不存在,使用ln -sf更新为新目标
Symlink points to wrong target
使用readlink确认当前目标,然后用ln -sf修正
ls -l显示链接指向路径不正确
检查是否使用了相对路径;考虑使用ln -sr创建相对链接
误用ln创建了硬链接到目录
删除硬链接;目录硬链接通常不允许,但在某些系统可能被创建
备份文件意外生成
使用-b时会产生备份文件,用--backup=numbered管理编号备份

温馨提示: ln是理解Linux文件系统的重要工具。建议掌握以下技巧:1)用符号链接管理软件的多个版本(如ln -sf python3.11 /usr/local/bin/python);2)用硬链接创建节省空间的备份(数据不复制);3)使用readlink -f获取链接的绝对路径;4)脚本中创建链接前先用-f确保覆盖;5)ln -sr创建相对路径链接,便于移动整个目录结构;6)使用find . -xtype l定期检查断开的链接。注意:git存储库不会跟踪符号链接的内容,只存储目标路径字符串。打包存档时,tar默认保留符号链接结构,而cp需要-d或-a选项保留符号链接。

本文PDF格式下载:

  关注公众号(haopython),请回复: LTLN

最新文章

随机文章