千家信息网

怎么理解Linux的硬链接与软链接

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇"怎么理解Linux的硬链接与软链接"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇
千家信息网最后更新 2026年11月01日怎么理解Linux的硬链接与软链接

这篇"怎么理解Linux的硬链接与软链接"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"怎么理解Linux的硬链接与软链接"文章吧。

硬链接

硬链接只是分区表中的一个条目,它指向磁盘上的某个区域,表示该区域已经被分配给文件。换句话说,硬链接指向已经被另一个条目索引的数据。让我们看看它是如何工作的。

打开终端,创建一个实验目录并进入:

mkdir test_dircd test_dir

使用 touch 创建一个文件:

touch test.txt

为了获得更多的体验(?),在文本编辑器中打开 test.txt 并添加一些单词。

现在通过执行以下命令来建立硬链接:

ln test.txt hardlink_test.txt

运行 ls,你会看到你的目录现在包含两个文件,或者看起来如此。正如你之前读到的那样,你真正看到的是完全相同的文件的两个名称: hardlink_test.txt 包含相同的内容,没有填充磁盘中的任何更多空间(可以尝试使用大文件来测试),并与 test.txt 使用相同的 inode:

$ ls -li *test*16515846 -rw-r--r-- 2 paul paul 14 oct 12 09:50 hardlink_test.txt16515846 -rw-r--r-- 2 paul paul 14 oct 12 09:50 test.txt

ls 的 -i 选项显示一个文件的 "inode 数值"。"inode" 是分区表中的信息块,它包含磁盘上文件或目录的位置、上次修改的时间以及其它数据。如果两个文件使用相同的 inode,那么无论它们在目录树中的位置如何,它们在实际上都是相同的文件。

软链接

软链接,也称为符号链接symlink,它与硬链接是不同的:软链接实际上是一个独立的文件,它有自己的 inode 和它自己在磁盘上的小块地方。但它只包含一小段数据,将操作系统指向另一个文件或目录。

你可以使用 ln 的 -s 选项来创建一个软链接:

ln -s test.txt softlink_test.txt

这将在当前目录中创建软链接 softlink_test.txt,它指向 test.txt。

再次执行 ls -li,你可以看到两种链接的不同之处:

$ ls -litotal 816515846 -rw-r--r-- 2 paul paul 14 oct 12 09:50 hardlink_test.txt16515855 lrwxrwxrwx 1 paul paul 8 oct 12 09:50 softlink_test.txt -> test.txt16515846 -rw-r--r-- 2 paul paul 14 oct 12 09:50 test.txt

hardlink_test.txt 和 test.txt 包含一些文本并且字面上占据相同的空间。它们使用相同的 inode 数值。与此同时,softlink_test.txt 占用少得多,并且具有不同的 inode 数值,将其标记为完全不同的文件。使用 ls 的 -l 选项还会显示软链接指向的文件或目录。

为什么要用链接?

它们适用于带有自己环境的应用程序。你的 Linux 发行版通常不会附带你需要应用程序的***版本。以优秀的 Blender 3D 设计软件为例,Blender 允许你创建 3D 静态图像以及动画电影,人人都想在自己的机器上拥有它。问题是,当前版本的 Blender 至少比任何发行版中的自带的高一个版本。

幸运的是,Blender 提供可以开箱即用的下载。除了程序本身之外,这些软件包还包含了 Blender 需要运行的复杂的库和依赖框架。所有这些数据和块都在它们自己的目录层次中。

每次你想运行 Blender,你都可以 cd 到你下载它的文件夹并运行:

./blender

但这很不方便。如果你可以从文件系统的任何地方,比如桌面命令启动器中运行 blender 命令会更好。

这样做的方法是将 blender 可执行文件链接到 bin/ 目录。在许多系统上,你可以通过将其链接到文件系统中的任何位置来使 blender 命令可用,就像这样。

ln -s /path/to/blender_directory/blender /home//bin

你需要链接的另一个情况是软件需要过时的库。如果你用 ls -l 列出你的 /usr/lib 目录,你会看到许多软链接文件一闪而过。仔细看看,你会看到软链接通常与它们链接到的原始文件具有相似的名称。你可能会看到 libblah 链接到 libblah.so.2,你甚至可能会注意到 libblah.so.2 相应链接到原始文件 libblah.so.2.1.0。

这是因为应用程序通常需要安装比已安装版本更老的库。问题是,即使新版本仍然与旧版本(通常是)兼容,如果程序找不到它正在寻找的版本,程序将会出现问题。为了解决这个问题,发行版通常会创建链接,以便挑剔的应用程序相信它找到了旧版本,实际上它只找到了一个链接并最终使用了更新的库版本。

有些是和你自己从源代码编译的程序相关。你自己编译的程序通常最终安装在 /usr/local 下,程序本身最终在 /usr/local/bin 中,它在 /usr/local/bin 目录中查找它需要的库。但假设你的新程序需要 libblah,但 libblah 在 /usr/lib 中,这就是所有其它程序都会寻找到它的地方。你可以通过执行以下操作将其链接到 /usr/local/lib:

ln -s /usr/lib/libblah /usr/local/lib

或者如果你愿意,可以 cd 到 /usr/local/lib:

cd /usr/local/lib

然后使用链接:

ln -s ../lib/libblah

以上就是关于"怎么理解Linux的硬链接与软链接"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

链接 文件 程序 目录 版本 相同 内容 指向 运行 不同 命令 应用程序 数据 磁盘 系统 问题 应用 两个 位置 地方 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 北京路客互联网科技有限公司 易互联网科技有限公司 中国 科技 互联网 齐家互联网科技 广州宏创互联网科技 南京欣网互联网科技 菲比寻常互联网科技 互联网科技宣传片 哈尔滨新华互联网科技 顶级互联网科技成果有哪些 金融科技与互联网金融相同和不同 互联网大会黑科技排名 全球顶尖互联网科技公司 宝灵互联网科技有限公司 晋城互联网科技 互联网科技包装股 云鲸互联网络科技有限公司 银川新华互联网科技学校是国营吗 数字科技和互联网金融哪个好 互联网科技公司简介 西安纸贵互联网科技有限公司 工业互联网科技新基建 深圳天众互联网科技公司 互联网科技英文翻译 联恩商钥互联网科技有限公司 济南华为互联网科技产业总部基地 互联网经济与金融科技 米聚互联网科技南京有限公司排面 威龙国际互联网科技公司
0