什么是硬链接和软链接,如果你想知道什么是硬链接和软链接,我带你去研究一下。看完这篇文章,让你全面了解什么是硬链接,什么是软链接!!!首先,在Linux系统下,链接文件有两种,一种是硬链接(HardLink),另一种是软链接,也称为符号链接(SymbolicLink)。Linux系统下硬链接可以使用ln命令创建硬链接:ln[参数][源文件或目录][目标文件或目录]在文件系统中,每个文件都会有一个索引节点(InodeIndex),这个索引的节点用来标识文件,硬链接通过这个索引节点链接起来。硬链接只能在同一个文件系统的文件之间创建,不能创建目录,但是可以创建多个硬链接,即多个文件可以指向同一个索引节点,或者一个文件可以有多个路径名,所以一个文件可以对应多个文件名。我们可以使用ls命令查看源文件和我们刚刚创建的硬链接的索引节点:从图中可以看出源文件和硬链接文件的索引节点是一样的,所以源文件和硬链接文件指向同一个索引节点。那么,为什么目录不能创建硬链接呢?让我们试试吧。如上图所示,不允许用户创建指向该目录的硬链接。每个人都知道目录树。如果你创建一个目录的硬链接,让我们仔细考虑一下。如果是这样的话,目录树就会变成一个环。当我们要定位这个目录下的文件时,我们是无法通过名称来定位的。硬链接相当于创建源文件的副本。如果修改了硬链接文件的内容,源文件的内容也会随之改变。我们在linux系统下开发的时候,有没有遇到过一些文件被误删,然后又找不回来的情况?我们应该做什么?如果你不知道如何恢复它,那么你会很困难并获得一些智慧。下次我会多创建几个硬链接,这样这个文件就会有多个链接。即使其中一个链接被删除,也没关系。文件或其他硬链接文件仍然可以使用,但是删除其中一个链接对索引节点和其他链接没有影响,因为只删除文件到索引节点的链接,只要最后一个也是唯一的链接没有删除,最后一根稻草还在。我们试试删除硬链接看看:然而在Linux系统中,会存在多个文件系统,这些文件系统会位于不同的磁盘或分区上。前面说了,硬链接只能在同一个文件系统下创建,是不是有点不方便?是的,硬链接只能这样,但是我们聪明的人类怎么可能只能这样。这时候软链接就派上用场了,那么软链接是怎么回事呢?软链接在Linux系统中,软链接可以共享文件或目录,就像Windows中的快捷方式一样。我们可以简单的把软链接的内容看成一个链接或者路径。我们在使用软链接的时候,就是通过软链接的内容来访问这个链接或者这个路径的内容,就像我们使用链接www.baidu.com访问百度一样,或者使用sudovim/etc/network/interfaces在Ubuntu下访问路径/etc/network/interfaces中的内容。前面说过,硬链接只能在同一个文件系统下创建,所以软链接不会有这个限制。可以理解为创建软链接就是为了摆脱这种限制。软链接文件可以指向任何文件系统下的任何文件或目录。不仅如此,软链接还可以指向一个不存在的文件,但是你不能创建一个指向不存在的文件的硬链接!说到这里,你应该知道什么是软链接了吧!Linux系统下使用ln命令创建软链接,与创建硬链接的命令类似。试一试:1.创建软链接:2.删除软链接:从上图我们可以看到,当源文件被删除后,软链接文件的名称仍然显示在目录中,但是当我们实际查看这个软链接文件时,它已经不存在了,变成了死链接,但它仍然显示在目录中。其实这也不难理解。我们想想Windows中的快捷方式,也是这样的,当我们删除Windows下安装的一个APP的所有源文件时,它的快捷方式仍然显示在桌面上,但是当我们用鼠标点击这个快捷方式文件的时候呢不存在,将弹出一个窗口。当我们不想要Windows桌面下的快捷方式时,直接删除快捷方式即可,软链接也是如此,直接删除软链接即可。我们在创建软链接的时候,要注意一个小问题。不要像我一样使用相对路径。您必须使用绝对路径而不是相对路径。相对路径创建的软链接无法访问,访问会报错:Toomanylevelsofsymboliclinks。当你看到这一行出错时,切换到绝对路径来解决问题。简单说一下我在实际场景中使用软链接的两个地方:1.有时候我们总是需要执行很多命令,而执行的命令是不同目录对应的路径,有的路径真的很长很难记.整个路径真的很难打出来,效率也很低。这时候软链接的作用就体现出来了。创建一个从这些又长又臭的路径到当前路径的软链接。路径是不是很简单?太多了。2、我在虚拟机中安装了很多交叉编译器,不同的编译器可能使用不同的第三方库。方法一定是把头文件放在编译器的路径下。编译程序的时候会自动找到头文件,但是库文件会比较大。如果每一个编译器都需要用到,那么每一个编译器都移动会占用空间。这时候,软链接的作用就来了。通过创建软链接方式,我们创建一个软链接,共享库文件,这样也可以减少磁盘空间占用。软链接还有很多其他的功能。我们需要在不同的场景下灵活的使用软链接的作用,最终可能会让我们的工作变得更轻松或者提高工作效率。在实际应用中,硬链接用的少,软链接用的多。
