linux下的文件链接

在linux系统中链接有两种,分别是软链接和硬链接,操作命令是ln(link的缩写),要注意的是该命令只能对文件进行操作操作,可以使用绝对路径和相对路径。顺便说一下绝对路径和相对路径,绝对路径就是从根目录下一直到当前文件的路径,相对路径是从当前路径开始到文件。
1.硬链接:
先使用touch命令创建一个link文件,给文件里写入内容,在命令行输入:ln ./link ./a按Enter,按ls显示看会生成硬链接文件。
这里写图片描述
在这里你可以看到文件a和link文件的创建时间 大小都是一样的 这就是我们在线面要讨论的问题,软连接和硬链接的区别;硬链接可以形象的用C语言下面的指针来加强理解,硬链接生成的文件就像是新的指针指向旧文件一样。
linux下的文件链接_第1张图片
我们也可以使用cat(和tail 、more、head都是查看文件的命令)查看源文件和目标文件,都是一样的
这里写图片描述
如果你在删除源文件或者是目标文件的一个后打开剩下的文件内容还是和之前一样的,原因就类似两个指针free其中一个后还有另外一个指针存在,所以文件内容没有变,如果你学过c++,这里的硬链接就相当于引用计数,你删除和增加硬链接都是在对引用计数的增减,只有当引用计数减为0的时候就找不到文件了,你也可以在上面图片中执行ll命令后看到源文件和目标文件都有一个2,那就是引用计数。
2、软连接:
软链接也用上面的link文件当作源文件,命令格式:ls -s file1 file2,在命令行输入:ln -s ./link ./b 在当前目录通过软连接生成b文件,之后使用ll查看生成文件;
linux下的文件链接_第2张图片
这里的显示可以看到b文件和link文件的生成时间和引用计数都是不一样,这里的link引用计数是2是因为之前的a文件存在,这里的b文件和link文件内容也是一样的。大小不一样的原因是软链接是真的创建了文件,如果删除了源文件就会变成死链接我们看那一下:
linux下的文件链接_第3张图片
这里的显示b文件是红色的,就是死链接的标志,其实软连接真的创建了文件但是为什么和源文件大小不一样呢?那是因为产生的软连接文件其实保存的是源文件的路径,这里也可以用C语言的二级指针来形象的比喻,当你删除源文件虽然你软连接文件存在但是源文件没有了是打不开软连接文件的。

要注意的是不管是软连接还是硬链接都不可以跨分区操作。

你可能感兴趣的:(Linux)