ln 命令详解:创建软链接和硬链接

阅读:11 2025-02-21

在 Linux 系统中,ln 命令用于创建链接(Link),即在文件系统中创建指向目标文件或目录的快捷方式。ln 主要支持 硬链接(Hard Link)软链接(Symbolic Link,也称符号链接)

本文将详细介绍 ln 命令的用法,包括基本语法、硬链接与软链接的区别、常见应用场景以及一些进阶技巧。


1. ln 命令基本语法

ln 命令的基本格式如下:

ln [选项] 目标文件  链接文件

常见选项:

选项说明
-s创建软链接(符号链接)
-f强制覆盖已存在的链接
-v显示详细信息
-n如果链接目标是目录,防止对目录进行软链接的解引用

2. 硬链接 vs 软链接

在 Linux 中,链接分为两种:

硬链接(Hard Link)

  • 硬链接是目标文件的 副本,但并不占用额外的存储空间。

  • 目标文件和硬链接共享相同的 inode,意味着它们指向的是相同的数据块。

  • 删除任意一个文件不会影响另一个,数据依然存在,只有当所有的硬链接都被删除后,数据才会真正消失。

  • 不能对目录创建硬链接。

  • 不能跨分区创建硬链接。

示例:创建硬链接

ln file1.txt file1_hardlink.txt

查看 inode 号,确认硬链接

ls -li file1.txt file1_hardlink.txt

输出示例:

1234567 -rw-r--r-- 2 user user 1024 Feb 21 10:00 file1.txt
1234567 -rw-r--r-- 2 user user 1024 Feb 21 10:00 file1_hardlink.txt

可以看到两个文件共享相同的 inode 号(1234567),表明它们是硬链接。


软链接(Symbolic Link)

  • 软链接类似于 Windows 下的 快捷方式,它只是一个指向目标文件的 路径引用

  • 软链接有自己的 inode,与原文件不同,但内容仅存储目标文件的路径。

  • 目标文件被删除或移动后,软链接会失效,称为 “悬空链接”“死链接”

  • 允许跨分区和目录创建软链接。

  • 可以对目录创建软链接。

示例:创建软链接

ln -s file1.txt file1_symlink.txt

查看软链接

ls -l file1_symlink.txt

输出示例:

lrwxrwxrwx 1 user user 11 Feb 21 10:00 file1_symlink.txt -> file1.txt
  • l 开头表示这是一个符号链接(symlink)。

  • -> file1.txt 表示 file1_symlink.txt 指向 file1.txt

如果 file1.txt 被删除,file1_symlink.txt 就会成为 “死链接”,指向一个不存在的文件。


3. 软链接的应用场景

(1)创建目录快捷方式

如果 /home/user/docs 目录经常使用,可以创建快捷方式:

ln -s /home/user/docs ~/docs_link

这样可以通过 ~/docs_link 访问 /home/user/docs,提高访问效率。


(2)为程序创建软链接

安装程序后,我们可以使用软链接将其添加到 /usr/local/bin 目录,使其可以在命令行全局访问。例如,安装 myapp/opt/myapp/bin/myapp,可以创建软链接:

sudo ln -s /opt/myapp/bin/myapp /usr/local/bin/myapp

之后,直接输入 myapp 即可运行程序,无需输入完整路径。


(3)版本管理

对于某些软件,我们可能有多个版本,例如 Python:

ln -s /usr/bin/python3.9 /usr/bin/python

这样,运行 python 时默认使用 python3.9

如果想切换到 Python 3.10,只需更新软链接:

ln -sf /usr/bin/python3.10 /usr/bin/python

4. 删除软链接和硬链接

删除软链接

使用 rm 命令删除软链接:

rm file1_symlink.txt

注意:删除软链接 不会影响原文件

如果软链接指向目录,直接 rm 即可,无需 -r 选项:

rm docs_link

删除硬链接

删除硬链接与删除普通文件一样:

rm file1_hardlink.txt

如果 file1.txt 仍然存在,文件数据不会被删除,只有所有硬链接被删除后,数据才会真正消失。


5. 总结

特性硬链接(Hard Link)软链接(Symbolic Link)
是否占用额外存储空间是(存储路径信息)
是否有相同 inode
是否可以跨分区
是否可以对目录创建
原文件删除后是否影响链接是(变成死链接)

ln 命令是 Linux 系统中管理文件和目录的重要工具,尤其是软链接,广泛应用于目录快捷方式、程序管理和版本控制等场景。掌握 ln 的使用,可以极大提高 Linux 文件系统的操作效率。


声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!