链接是另一种将文件和目录放在你想要的地方的方法。除了cp和mv(我们在本系列的前一部分中详细讨论了其中的两个)之外,链接是另一种将文件和目录放在您想要的位置的方式。它的优点是可以让你同时在多个位置显示一个文件或目录。如前所述,在物理磁盘层面,文件和目录之类的东西并不真正存在。文件系统是为了方便人类使用而组成的。但是在磁盘级别,有一个叫做分区表的东西,它位于每个分区的开头,然后数据分散在磁盘的其余部分。尽管有不同类型的分区表,但位于分区开头的分区表包含映射每个目录和文件开始和结束位置的数据。分区表就像一个索引:当从磁盘加载文件时,操作系统查找表中的条目,分区表告诉文件在磁盘上的开始和结束位置。然后磁头移动到开始,读取数据直到它到达结束,你看到:这是你的文件。硬链接硬链接只是分区表中的一个条目,它指向磁盘上已分配给文件的区域。换句话说,硬链接指向已经被另一个条目索引的数据。让我们看看它是如何工作的。打开一个终端,创建一个实验目录并输入:mkdirtest_dircdtest_dir使用touch创建一个文件:touchtest.txt要进行更多操作(?),请在文本编辑器中打开test.txt并添加一些单词。现在通过执行以下命令创建硬链接:lntest.txthardlink_test.txt运行ls并且您将看到您的目录现在包含两个文件,或者看起来是这样。正如您之前读到的,您真正看到的是完全相同文件的两个名称:hardlink_test.txt包含相同的内容,不会再占用磁盘空间(尝试使用大文件进行测试),然后使用与test.txt相同的inode:$ls-li*test*16515846-rw-r--r--2paulpaul14oct1209:50hardlink_test.txt16515846-rw-r--r--2paulpaul1410月12日09:50test.txtls的-i选项显示文件的“inode编号”。“inode”是分区表中的一块信息,包含文件或目录在磁盘上的位置、上次修改时间以及其他数据。如果两个文件使用相同的索引节点,那么无论它们在目录树中的位置如何,它们实际上都是同一个文件。软链接软链接,也称为符号链接symlink,与硬链接不同:软链接实际上是一个单独的文件,有自己的inode和磁盘上的小空间。但它只包含一小段数据,将操作系统指向另一个文件或目录。可以使用ln的-s选项创建软链接:ln-stest.txtsoftlink_test.txt这会在当前目录下创建一个软链接softlink_test.txt,指向test.txt。再次执行ls-li,可以看到两个链接的区别:$ls-litotal816515846-rw-r--r--2paulpaul14oct1209:50hardlink_test.txt16515855lrwxrwxrwx1paulpaul8oct1209:50softlink_test.txt->test.txt16515846-rw-r--r--2paulpaul14oct1209:50test.txthardlink_test.txt和test.txt包含一些文本并且从字面上占据相同的空间。它们使用相同的inode编号。同时,softlink_test.txt占用更少,并且具有不同的inode值,将其标记为完全不同的文件。使用ls的-l选项也会显示软链接指向的文件或目录。为什么要使用链接?它们适用于具有自己环境的应用程序。您的Linux发行版通常不会随附您所需的最新版本的应用程序。以优秀的Blender3D设计软件为例。Blender允许您创建3D静止图像和动画电影。每个人都想在他们的机器上安装它。问题是,当前版本的Blender至少比任何发行版附带的版本高一个版本。幸运的是,Blender提供了开箱即用的下载。除了程序本身,这些包还包含Blender需要运行的复杂库和依赖框架。所有这些数据和块都在它们自己的目录层次结构中。每次你想运行Blender时,你可以cd到你下载它的文件夹并运行:./blender但这很不方便。如果你可以从文件系统的任何地方运行blender命令,比如桌面命令启动器,那就更好了。这样做的方法是将blender可执行文件链接到bin/目录。在许多系统上,您可以通过将blender命令链接到文件系统中的任何位置来使它可用,就像这样。ln-s/path/to/blender_directory/blender/home/
