【linux】基础IO(软硬链接)

上一节我们已经搞懂了已经被打开的文件,还有没有被打开的文件都是怎样被管理起来的,同样,路径的重要性也不言而喻,是确定文件在那个分区,进而可以解析到目标文件与目录内容的关系,从而找到inode,再找到对应的属性与内容。

今天我们把这些理论进行应用一下,也就是软硬连接。

见一见软硬链接:

软链接:

我们先创建一个文件在这里插入图片描述
使用ln -s file1.txt file_soft.link建立软链接。
在这里插入图片描述
随后进行cat,发现cat的内容和我们建立链接的目标文件的内容是一样的。
在这里插入图片描述
另外我们也发现:软链接与目标文件是独立的,因为是两个不同的inode编号。

若是将目标文件删除则会出现高闪状态
在这里插入图片描述

硬链接:

ln命令默认建立的就是硬链接,所以我们不用加选项即可建立硬链接。
在这里插入图片描述
同样,硬链接打印出来的内容与链接文件是一致的。
在这里插入图片描述
此外,他们的inode居然是一样的!

而且删除目标文件不会对硬链接造成影响。
在这里插入图片描述

软硬链接的特征:

我们通过以上操作即可总结出三个特征:

  1. 软连接有一个独立的文件,因为他有独立的inode编号。
  2. 硬链接不是一个独立的文件,因为他没有独立的inode编号,用的是目标文件的编号。
  3. 属性中有一列硬链接数。

对于1,软链接类似windows中的快捷方式,而这个文件的内容本质上是目标文件的字符串。

对于2,硬链接就是文件名和inode编号的映射关系,建立硬链接就是添加一个新的文件名和inode编号的映射关系。实际上我们的mv重命名的本质也是如此。

所以找到一个文件只有两种方式

1.通过路径->软链接
2. 直接找到对应的inode编号->硬链接

对于3,硬链接数是什么?
在这里插入图片描述
就是这个1,代表当前这个inode编号只与文件名建立了一个映射关系。
本质上也是一个文件的磁盘级引用计数。

那么目录的硬链接为什么开局就有两个硬链接,怎么就比普通文件多一个呢?

我们现在创建一个空目录,
在这里插入图片描述

那么这个空目录的硬链接数至少是1我们是可以理解的,但是不要忘记我们每个目录还有./..这两个隐藏目录在这里插入图片描述
可以看到隐藏目录的.也是一个硬链接,链接到a这个目录。
所以就会有两个硬链接数。
从这我们也可以得到一个结论:一个目录的硬链接数-2 = 当前目录内的目录个数

那我们可不可以给目录建立硬链接?
在这里插入图片描述

答案是否定的。
为什么系统自己可以给自己的目录建立硬链接(就像./..),用户不可以?
若是用户设置了一个目录的硬链接,当使用find之类的命令进行查找时,就会发生轮转的现象!
./..这两个文件名是固定的,系统也认识这两个文件名,故不会发生这种现象。

软硬链接的用途:

软链接:

好吧,软链接本质上就是一个快捷方式,他不是类似,他就是!

硬链接:

  1. 构建linux的路径结构,可以使用./…进行路径定位。
  2. 进行文件备份。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/637066.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习预测汽车油耗效率 MPG

流程 数据获取导入需要的包引入文件,查看内容划分训练集和测试集调用模型查看准确率 数据获取 链接:https://pan.baidu.com/s/1KeIJykbcVpsfEk0xjhiICA?pwd30oe 提取码:30oe --来自百度网盘超级会员V1的分享导入需要的包 import pandas as pd imp…

【QT学习】8.qt事件处理机制,事件过滤器,自定义事件

1.qt事件处理机制 事件处理: 当用户移动鼠标的时候 ,创建一个 鼠标移动事件对象 然后把这个对象放到 事件队列里面去,事件管理器 从队列中 取出事件,然后 调用其对应的事件处理函数。 多态机制: &#x…

跨考计算机408,小白一定要知道的这件事!

跨考408一定要学好数学! 为什么? 因为这是跨考的同学唯一的优势,408是有门槛的,这个门槛包括但不限于,数据结构,计算机组成原理,操作系统等科目,还有编程能力,推理能力…

IEEE PDF eXpress Validating Pdf..之后Error in converting file

在将自己写好的pdf论文转化为IEEE出版的pdf论文格式的时候,错误如下图: 解决办法如下:失败之后,那里有一个选项按钮,叫做manual request,也就是人工转换,点那个申请就可以了,然后也挺…

如何在宝塔中使用命令行执行命令

一、 进入宝塔,找到网站然后点击根目录 二、进入项目中,然后点击 终端 三、如果这里会弹出输入密码的框,那就是需要你输入一下你服务器的 账号密码,然后就登录进去了,可以在这里直接执行命令即可,比如我这里…

TorchEEG文档_学习笔记1【代码详解】

文章目录 一、用户文档1.安装Pytorch2.安装TorchEEG3.安装与图算法的插件 二、教程1.使用TorchEEG完成深度学习工作流程2datasets模块3.transforms模块4.models模块5.trainer模块6.使用Vanilla PyTorch训练模型 一、用户文档 1.安装Pytorch TorchEEG依赖于PyTorch,根据系统、…

git 小记

一、 github新建仓库 git clone 。。。。。。。。。。。 (增删查补,修改) git add . git commit -m "修改” git push (git push main) 二、branch 分支 branch并不难理解,你只要想像将代码拷贝到不同目录…

Linux操作系统·Linux简介

1.世界上第一个完善的网络操作系统 Unix是1969年由美国电话电报公司(AT&T)贝尔实验室的两个工程师所创造的操作系统,它允许计算机同时处理多用户和程序。目前大型政府单位、大型企业、航空公司、金融机构多在使用,价钱昂贵,但性能和稳定性…

排序之插入排序:从斗地主到插入排序

目录 1.斗地主如何摸牌 2.从摸牌想到插入排序 3.完成插入排序 4.结束语 1.斗地主如何摸牌 不知道各位是否玩过几乎人人都玩过的斗地主游戏呢?相必各位或多或少都玩过一点,再没玩过也看别人打过。今天博主就将从这个游戏为大家讲解我们的插入排序。 在…

【项目】仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器(TcpServer板块)

【项目】仿muduo库One Thread One Loop式主从Reactor模型实现⾼并发服务器(TcpServer板块) 一、思路图二、模式关系图三、定时器的设计1、Linux本身给我们的定时器2、我们自己实现的定时器(1)代码部分(2)思…

✌粤嵌—2024/4/11—合并区间✌

代码实现: /*** Return an array of arrays of size *returnSize.* The sizes of the arrays are returned as *returnColumnSizes array.* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().*/// 交换 void swap(i…

UE5、CesiumForUnreal实现建筑白模生成及白模美化功能

1.实现目标 在专栏上篇文章基于GeoJson文件生成城市级白模(本文建筑白模数量12w+)的基础上修改,计算法线和纹理坐标,并基于特定材质进行美化,美化后的白模GIF动图如下所示: 文章目录 1.实现目标2.实现过程2.1 基于Cesium材质美化2.1.1实现原理2.1.2 C++代码2.1.3 蓝图应…