Linux小黑板(6):软硬链接

news/2024/11/8 14:38:31/

"飞吧,去寻觅红色的流星!"

一、软硬链接简介

软链接:软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。
软链接
硬链接:硬链接(hard link,也称链接)就是一个文件的一个或多个文件名。再说白点,所谓链接无非是把文件名和计算机文件系统使用的节点号链接起来。因此我们可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。
硬链接

举个例子,软链接很像我们Windows平台下的快捷方式 任何一个快捷方式都是一串路径

双击快捷方式,就等于去这个路径底下,找到.exe文件运行。

二、Linux下如何建立软硬链接

三、再谈软硬链接

(1)软链接和硬链接的区别

你说了这么多,我还是知道软硬链接有什么区别。它们各自都是干什么用的!

从上面的图,你最直观的感受是什么?

当然是inode! 硬链接的inode 和 链接文件的inode是同样一个。 但是软链接的inode却是独立的!

因此,它们两个的本质区别在于: 是否是新创建了文件! 本质在于,一个inode一个独立的文件!

创建硬链接系统做了什么?

建立硬链接根本没有创建文件! 因为没有独立的inode。因此你这个硬链接的文件属性内容,一定是别人的属性集合和inode集合。

如果此时我们删除原文件呢?

我们此时可以看到,文件的inode的链接数从2变成了1。 那么文件是否还存在?! 答案是是的!

inode内部有一个计数器(引用计数),如何判别一个文件该被真正删除了?当这个硬链接数变为0的时候!

为什么软链接在那里疯狂闪红?

我们先来谈谈软链接具体是什么。

由此,更加应证了我们说的,软链接是一个快捷方式的说法。 那么它是一个文件,那它的数据块存储的是什么呢? 没错! 就是链接文件的 绝对路径!

此时,我们重新创建test.c,惊奇地发现软链接不再"框框"闪红了。

软链接是按照文件名作为自己的内容属性

硬链接则并非独立的文件,而只是指向了已经存在的inode

四、目录与软硬链接

我们随便创建一个目录文件,再看硬链接数,为什么是2呢?

任何一个目录,都有隐藏的硬链接文件"." 、 "..",linux文件系统的访问是树状结构,但是也有指向自己和上级目录的硬链接。我们平常执行的./test = /empty/test。

为什么linux系统不允许用户给目录自定义建立链接?

引入了对目录的硬连接就有可能在目录中引入循环,在目录遍历的时候系统就会陷入无限循环当中,这样导致无法定位到访问目录。Linux的目录结构是一棵以“/目录”为根节点的树,如果允许自定义硬连接,则很有可能会破坏这个结构,甚至形成循环;而一旦形成循环,对于需要遍历目录树的命令,是致命的。所以为了避免对目录树结构的破坏,linux不允许用户自定义硬连接在目录上。

总结

①linux下如何建立软硬链接? ln (-s) file.c file.link

②软链接是独立的文件内容是链接文件的绝对路径,硬链接不是独立的文件,会被inode里的引用计数++,一旦引用计数为0 表示该文件可以被真正删除。

③目录也是有硬链接的,但是linux系统处于自己的考虑,不会让用户给目录建立硬链接

本篇到此结束,

感谢你的阅读

祝你好运~


http://www.ppmy.cn/news/9928.html

相关文章

Qt—事件处理

Qt中,事件作为一个对象,继承自QEvent类,常见的有键盘事件QKeyEvent、鼠标事件QMouseEvent和定时器事件QTimerEvent等。Qt中,任何QObject子类示例都可以接收和处理事件。实际编程中通常实现部件的paintEvent(&#xff0…

年度征文 | 回顾2022,展望2023 (清风与我)

个人简介: 名称内容个人主页清风与我学习方向主攻前端方向推荐学习vue,vue3,node.js,React,项目实战推荐学习用网站菜鸟教程,博客,哔哩哔哩 …学习用资源网vue,element,…

八、k8s 数据存储

文章目录1 数据存储介绍1.1 基本存储1.1.1 EmptyDir1.1.2 HostPath1.1.3 NFS2 高级存储2.1 PV2.2 PVC2.3 生命周期3 配置存储3.1 ConfigMap3.2 Secret1 数据存储介绍 在前面已经提到,容器的生命周期可能很短,会被频繁地创建和销毁。那么容器在销毁时&am…

容器生命周期事件处理

容器生命周期事件处理 Kubernetes 中支持容器的 postStart 和 preStop 事件,本文阐述了如何向容器添加生命周期事件处理程序(handler)。 postStart 容器启动时,Kubernetes 立刻发送 postStart 事件,但不确保对应的 h…

Arduino与Proteus仿真实例-人脸追踪及反馈到舵机转向控制仿真

人脸追踪及反馈到舵机转向控制仿真 文章目录 人脸追踪及反馈到舵机转向控制仿真1、仿真电路原理图2、仿真代码实现3、人脸检测及追踪代码4、仿真结果本文将演示如何通过OpenCV进行人脸检测、追踪并反馈到舵机转向控制。OpenCV检测到人脸后,实时跟踪人脸的移动方向,转换成XY坐…

Day1. Spring

1 课程描述IoC基础容器,主要涉及Bean对象的管理。AOP面向切面编程,主要涉及切面配置,声明式事务控制Spring整合Web环境。Web层解决方案-SpringMVC.1.1 IoC、DI和AOP思想的提出由于传统的JavaWeb出现的问题:问题1:层与层…

【C语言进阶】 带你玩转指针

指针进阶一、字符指针二、指针数组三、数组指针3.1:数组指针的使用四、数组参数、指针参数4.1:一维数组传参4.2:二维数组传参4.3:一级指针传参:4.4:二级指针传参:五:函数指针一、字符…

【 uniapp - 黑马优购 | 商品详情 】详情页UI结构设计、商品导航区域实现

个人名片: 🐼作者简介:一名大二在校生,讨厌编程🎋 🐻‍❄️个人主页🥇:小新爱学习. 🐼个人WeChat:hmmwx53 🕊️系列专栏:&#x1f5bc…