Linux软硬链接

1,如何建立软连接

操作:ln  -s  +要被建立链接的文件  +软连接文件

看到第三行,可以看到有个箭头指向,就是给test.c建立了软链接,也可以看到他们的inode不一样,那么我们来分别cat一下这两个文件看看结果:

由此可以得出结论,软连接的本质是一个独立文件,与源文件有不同的inode,用cat打开查看两文件时发现两文件内容一模一样,其作用就和windos中的快捷方式一样。

2,如何建立硬链接

操作:ln +被链接文件名 + 链接文件名:

可以看到,建立硬链接之后,他们的inode都一样,而且第三列的数字由之前的1变成了2:

       

由此知道,硬链接不是一个独立的文件,由于都是指向同一个inode,所以cat出来的内容自然也是一样的:

                           

3,如何理解软硬链接

a,软链接有独立的inode,软连接的内容是保存目标文件的路径,就像window中的快捷方式。

b,硬链接不是独立的文件,没有独立的inode,硬链接本质就算一组文件名和已经存在的文件的映射关系!

我们用指令:ls -i的时候有一下数字1,2:

表示有多少个文件与目标文件有硬链接关系,也是inode本身的引用技术:硬链接数。

如果删了目标文件而没有删除之前硬链接的文件,就相当于给文件重命名:

这相当于给文件做了一次备份,所以在Linux中备份是不需要拷贝复制源文件,直接备份文件名就行,方便快捷减时间。

但是同时软连接就失去了连接路径爆红:

4,关于目录文件的软硬链接

a,目录文件可以建立软链接:

建立目录软链接之后,可以直接cd到软连接的目录地址

b,关于目录文件的硬链接

Linux不允许对目录建立硬链接,只有系统自带的几个文件可以对目录进行硬链接:

首先我们新建一个目录:

可以看到,之前我不是说过目录不可以建立硬链接,那么为什么这两硬链接数为2?

大家应该听说过.和..分别带包本地目录和上级目录吧,我们进到目录去看一看:

可以看到,.文件与test文件的inode一样,我们再在test里建一个目录:

可以看到,在test里建立的test1文件中..目录,表示上级目录,就和test硬链接在一起,这个时候test文件硬连接数应该就是3,我们出去看一下:

所以可以根据文件的硬连接数判断有多少文件,

其中根目录的..文件指向自己,但是不计入引用计数:

         

如果我们要手动给文件建立硬链接:

             

系统直接不给建立,原因是为了防止链接闭环,目录可以建立软连接也会形成文件路径闭环,但是软连接可以直达,硬链接会无限查找,了解就行。 

上一篇:交换排序(冒泡/快排)


下一篇:WPF+MVVM案例实战(十九)- 自定义字体图标按钮的封装与实现(EF类)-E类按钮功能实现与封装