【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,所以可以得出结论。

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

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

相关推荐
数据与后端架构提升之路15 分钟前
从神经元到神经网络:深度学习的进化之旅
人工智能·神经网络·学习
一行124 分钟前
电脑蓝屏debug学习
学习·电脑
星LZX38 分钟前
WireShark入门学习笔记
笔记·学习·wireshark
阑梦清川39 分钟前
在鱼皮的模拟面试里面学习有感
学习·面试·职场和发展
qq_4330994039 分钟前
Isaac Gym学习笔记——概述
学习
pk_xz1234562 小时前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强2 小时前
Linux之sed命令详解
linux·运维·服务器
秃头佛爷3 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
Lary_Rock4 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
dayouziei5 小时前
java的类加载机制的学习
java·学习