【Linux学习】深入理解软硬链接


🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊

目录


🎈软硬链接

观察软硬链接现象以及指令
命令:ln

作用:给指定文件建立软链接

🐧软链接

指令:ln -s 指定文件 软链接名称

根据下图的例子,我们可以直观上发现:

  • 软链接本质上是一个独立的文件,有独立的inode,该文件的数据区里面存储的是指定文件所在的路径

示例:

🐬硬链接

指令:ln 指定文件 硬链接名称

根据下面示例的的现象可以发现:

  • 硬链接本质不是一个独立的文件,因为它的inode编号与目标文件一样。本质是新的文件名,和目标文件的inode编号的映射关系!将映射关系写入到指定的目录的数据块中,并将该目录的inode属性中的引用计数++

我们在删除文件时干了两件事情:

  • 在目录中将对应的记录删除。
  • 将硬链接数-1,如果为0,则将对应的磁盘释放。

示例:

删除软硬链接文件,可以使用rm指令删除,也可以使用指令:unlink 软硬链接文件名。其中unlink也可删除普通文件。二者整体区别不大。

`🐸总结软硬链接的原理

硬链接本质:是新的文件名,和目标文件的inode编号的映射关系!将映射关系写入到指定的目录的数据块中,并将该目录的inode属性中的引用计数++。

软链接本质:上是一个独立的文件,有独立的inode,该文件的数据区里面存储的是指定文件所在的路径。 类似windows下的快捷方式。

当我们右键点击软件图标,查看属性,我们可以发现其中的目标就是软链接文件的内容(目标文件的所在路径):

🐍软硬链接的应用场景

🐉软链接应用场景

软链接的应用场景:快捷方式

  • 当我们的可执行程序的位置距离当前位置较深的时候,每次执行的时候都需要 ./路径 都需要加很长的路径,较麻烦,可以直接在当前位置给可执文件建立软链接,就可以直接在当前位置使用 ./软链接名 即可。
    示例:

🦎硬链接应用场景

当我们新建立一个文件,文件的硬链接数为1,因为当前目录的数据块中,对应文件和文件inode的映射关系只有一个,这个很好理解,但是当我们新建立一个目录时,硬链接数却为2,为什么呢?

  • 因为新建立的目录中,有两个隐藏的目录,分为别为... 如图:其中的 .目录的inode与empty目录的inode编号一样,对于一个inode编号,有两个文件名与之对应,所以硬链接数为2。
    这里就很好解释..文件的硬链接数为什么为3了,这里不赘诉。

所以这里可以得出结论一个目录下有多少个子目录,等于该目录的 硬链接数-2 得到

  • 解释:一个空目录,默认硬链接数为2,上面已经解释了,当我们在这个目录里面每新建立一个目录,新建的目录里面都会有一个隐藏的...文件,该...文件是上级目录的一个链接硬,所以硬链接数会+1,每新建立一个都会+1,所以可以得出结论。

注意:用户对一个文件可以建立软硬连接,但是目录只能建立软链接不能建立硬链接(系统可以建立,其中.与...就是例子)。

  • 解释:因为如果用户可以建立硬链接的话,当我们如果给/目录建立硬链接的话,当我们在查找文件的时候,会根据文件路径
    前缀进行路径解析,当从/目录开始向下进行查找的时候,会发生环路问题。如果是系统建立的硬链接,系统会避免环路问题。

相关推荐
我要吐泡泡了哦24 分钟前
GAMES104:15 游戏引擎的玩法系统基础-学习笔记
笔记·学习·游戏引擎
骑鱼过海的猫12324 分钟前
【tomcat】tomcat学习笔记
笔记·学习·tomcat
小安运维日记26 分钟前
Linux云计算 |【第四阶段】NOSQL-DAY1
linux·运维·redis·sql·云计算·nosql
贾saisai2 小时前
Xilinx系FPGA学习笔记(九)DDR3学习
笔记·学习·fpga开发
北岛寒沫3 小时前
JavaScript(JS)学习笔记 1(简单介绍 注释和输入输出语句 变量 数据类型 运算符 流程控制 数组)
javascript·笔记·学习
CoolTiger、3 小时前
【Vmware16安装教程】
linux·虚拟机·vmware16
m0_741768854 小时前
使用docker的小例子
运维·docker·容器
铁匠匠匠4 小时前
从零开始学数据结构系列之第六章《排序简介》
c语言·数据结构·经验分享·笔记·学习·开源·课程设计
学习3人组4 小时前
CentOS 中配置 OpenJDK以及多版本管理
linux·运维·centos
厨 神5 小时前
vmware中的ubuntu系统扩容分区
linux·运维·ubuntu