【Linux系统】深刻理解软硬链接




在这里插入图片描述



1、操作层面

软链接

先说结论:软链接本质是一个独立的文件

  • 先创建一个文件 file.txt
  • 再创建一个软链接:命令 ln -s file.txt file-soft.link后者链接前者
    • 软链接的名字和后缀随便取的

使用命令 ls -li 查看,你可以发现两个文件有着不同的 inode号,即可证明这两个属于不同文件。

在这里插入图片描述

同时,软链接的文件类型标识为 l

在这里插入图片描述

软链接有何用:在用户层看来,软链接就相当于一份原文件,两个文件有着相同的内容(文件 file.txt 的内容是 hello Linux

在这里插入图片描述


硬链接

先说结论:硬链接本质不是一个文件

通过命令:ln file.txt file-hard.txt 给文件硬链接(后者链接前者
(同理这个硬链接的命名和后缀都是随便起的)(该命令和前面软链接的命令相比,没有 -s

在这里插入图片描述

可以发现,硬链接的 inode 号和原文件一样,说明不是独立文件

同时信息列表中有个数字从 1 到 2

而其他数据基本相同




上面是操作层面的演示和理解,但是只了解操作是远远不够的

还需理解配套的相关原理



2、原理层面

深刻理解软硬链接

1、软链接有独立的 inode,软链接内容上,保存的是目标文件的路径(就比如 windows 上的快捷方式:Win图形化桌面上的应用图标)

2、硬链接不是独立的文件,没有独立的inode,硬链接本质就是一组文件名和已经存在的文件的映射关系!(相当于C++的引用)

  • 这种硬链接,一个 inode文件对于多个文件名,是通过引用计数的方式实现的
  • 图中的 3 就是引用计数的大小了

在这里插入图片描述

我们对一个文件 file.txt 进行硬链接,然后删掉原文件 file.txt ,发现硬链接还指向该文件,证明该文件没有被删除,只是删掉了表面的文件名

而这个过程是不是完成了一次文件的重命名工作?因此

我们经常使用的操作:重命名与给文件起一个文件名,本质实际上就是在 硬链接的过程!



如果我将原文件删掉,可以发现软链接直接变红(警告了)(就是因为软链接保存的是原文件的路径,原文件删掉了,路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值