linux软硬链接(代码片段)

好想有猫猫 好想有猫猫     2023-04-05     266

关键词:

前言

上篇Linux的文章,我们学习到了文件系统中,对磁盘文件的管理。
而本篇文章,我们要以文件系统的基础知识,了解软硬链接
话不多说,马上开始今天的学习。

文章目录

一. 软链接

1. 软链接的语法

我们先创建一个myfile.txt的文件,并写入一些内容

软链接
ln -s 文件名 软链接名

2. 软链接的本质

我们通过cat软链接,也可以查看my_file.txt的内容
同时我们发现可以通过ll -i指令查看文件的inode编号


蓝色部分都是文件的inode编号

我们发现软链接my_soft的inode和myfile.txt不一样

my_soft软链接是一个独立的新的链接文件,有自己的inode编号,也一定有自己的属性和内容
软链接内部放的是自己所指向的文件的路径

3. 软链接的应用

有了对软链接的认识,我们接下来接触软链接的应用

比如我们创建一个路径

然后写一个打印hello world的小程序,放到这个深路径中

然后我们可以通过软链接链接这个小程序


然后我们可以通过这个软链接使用程序

这样看下来,我们可以通过软链接,将一个不存在本目录之下的程序,不用指明路径就可以直接使用

软链接其实就相当于Window下的快捷方式

二. 硬链接

1. 硬链接的语法

硬链接
ln 文件名 硬链接名

2. 硬链接的本质


我们通过cat指令,同样可以查看到myfile.txt的内容
那硬链接和软链接有什么不同呢?
我们再用ll -i指令查看一下文件的inode

我们发现硬链接和软链接形成的文件的inode编号不同,我们上面说了,软链接是新的独立的文件,会有自己的inode,但我们这里发现硬链接的文件的inode和链接文件的inode一样,所以可以肯定的是硬链接并没有产生新文件。

my_hard硬链接和目标文件共用一个inode编号,这代表硬链接和目标文件共用一个inode
硬链接本质其实是在目录里新建一个文件名和该文件inode的映射关系
硬链接个数是inode属性之一,记录该文件同时被几个文件名/硬链接指向。

当一个文件有多个硬链接时,rm删除并不会达成效果,因为硬链接个数属于属性之一,当文件的硬链接个数大于1时,rm指令本质只会将硬链接个数-1,并不会真正删除文件,只会删除指定的硬链接。当硬链接个数为1时,rm删除,才会真正的删除文件。

3. 软链接补充知识

这里想通过软硬链接,证明软链接文件存储的内容是文件的路径。

我们创建一个myfile.txt文件,并且该文件还有两个硬链接,和一个软链接
myfile.txt内容是5句"hello world"

接下来,我们尝试删除myfile.txt这个硬链接,此时,因为硬链接个数大于1,rm并不会删除源文件,只会将硬链接个数-1

myfile.txt删除后,my_hard和my_hard1这两个硬链接没有问题,硬链接个数确实-1,文件内容也还是5句"hello world",但是我们发现软链接失效了。

这是因为软链接内容存储的是绝对路径,类似~/lesson/mydemo/myfile.txt,当我们将myfile.txt这个文件名删除,软链接自然找不到,所以就失效了。

4. 硬链接的应用

我们知道目录也是文件,所以目录的inode结构体和普通文件的inode结构体是相同的,那么目录也会有其硬链接个数,我们创建一个目录,并查看其硬链接个数

我们发现目录一创建,其硬链接数就是2。那除了dir1这个硬链接,还有什么硬链接呢?
我们再通过ll -a -i指令同时显示隐藏文件和文件inode编号

这时我们想起来,.也指向当前目录,并且二者的inode编号相同,所以. 是当前目录的一个硬链接
既然 . 是目录的一个硬链接,那 . . 自然也是目录的硬链接,是上级目录的硬链接

我们知道,目录也是文件,这样文件就会像一棵多叉树,但是要想目录的上下级切换,就需要 .. 和当前目录的子目录名 . . 实现向上级目录的跳跃,子目录名实现向下级目录的跳跃
但是,除了. 和. .这两个硬链接,Linux不允许对目录做硬链接,因为可能出现环形目录的情况,可能会打破文件系统目录的有向无环图结构,可能创建目录循环。

结束语

软硬链接的学习大致如此,感谢阅读

如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。

linux深入理解重定向inode详解与软硬链接的概念及区别(代码片段)

...件系统inode详细介绍inode是一个文件的属性集合目录的inode软硬链接软链接介绍硬链接介绍本文将进一步介绍重定向、文件系统、inode以及软硬链接的相关知识。再识重定向在之前我们已经知道了输出重定向的概念,即本来应... 查看详情

软硬方式链接(代码片段)

在Linux系统中的ln命令能够让用户创建出两种不同类型的文件快捷方式,一定要注意区分:硬链接(hardlink)可以被理解为一个“指向原始文件inode的指针”,系统不为它分配独立的inode与文件,所以实际上来讲硬链接文件与原始文件其实... 查看详情

linux软硬链接(代码片段)

...本篇文章,我们要以文件系统的基础知识,了解软硬链接话不多说,马上开始今天的学习。文章目录前言一.软链接1.软链接的语法2.软链接的本质3.软链接的应用二.硬链接1.硬链接的语法2.硬链接的本质3.软链接补充知... 查看详情

linux系列文件属性查看和修改,以及软硬连接(代码片段)

文件属性查看和修改,以及软硬连接1、文件目录基本属性2、修改文件属性3、查看文件内容4、Linux链接概念4.1、硬链接4.2、软连接4.3、测试4.4、结论1、文件目录基本属性可以使用man[命令]来查看各个命令的使用文档。如:... 查看详情

文件系统与软硬链接(代码片段)

文章目录文件系统与软硬链接一、硬盘1、固态硬盘(SolidStateDisk,SSD)2、机械硬盘(HardDiskDrive,HDD)I.磁盘容量公式二、文件系统1、机械硬盘的分块管理2、ext系列文件系统I.块信息II.目录与映射表III.属性、数据的分离IV.文件的三个时间... 查看详情

linux软硬链接和动静态库详解(代码片段)

软硬链接🔗软链接的建立显示出inode软链接就是一个普通文件,有自己独立的inode,类似于一个桌面上的快捷方式。保存的是指向所链接文件的路径。硬链接的建立硬链接拥有与链接文件相同的inode,没有自己独立... 查看详情

linux软硬链接和动静态库详解(代码片段)

软硬链接🔗软链接的建立显示出inode软链接就是一个普通文件,有自己独立的inode,类似于一个桌面上的快捷方式。保存的是指向所链接文件的路径。硬链接的建立硬链接拥有与链接文件相同的inode,没有自己独立... 查看详情

linux篇第九篇——基础io(系统文件io+文件描述符+重定向+文件系统+软硬链接)(代码片段)

⭐️这篇博客就要开始聊一聊Linux中基础IO相关知识,IO相信大家都不陌生,我们在C/C++中对文件进行读写的操作,也就是文件IO,这篇博客我也会带大家回顾一下。这篇博客还会介绍系统中的文件IO调用的接... 查看详情

linux基础io——深入理解文件系统|软硬链接(代码片段)

...存储结构🟢磁盘的虚拟结构🎨文件系统与inode三.软硬链接🌏软链接🌏硬链接📢写在最后一.答疑解惑🌈close关闭fd之后文件内部没有数据代码展示:#include<stdio 查看详情

linux理解文件系统——软硬链接(代码片段)

...盘的存储结构3.磁盘的逻辑结构二、文件系统与inode三、软硬链接1.软链接2.硬链接四、总结一、了解磁盘磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。下面,我们来简... 查看详情

linux理解文件系统——软硬链接(代码片段)

...盘的存储结构3.磁盘的逻辑结构二、文件系统与inode三、软硬链接1.软链接2.硬链接四、总结一、了解磁盘磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。下面,我们来简... 查看详情

linux系统编程:基础io下dup2实现输出重定向输入重定向追加重定向|理解磁盘|理解文件系统中inode的概念|软硬链接(代码片段)

写在前面这里先接着《基础IO上》中的缓冲区的内容作些补充,这里主要补充dup2接口。✔测试用例一:#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<unistd.h>intmain() clos 查看详情

linux系统编程:基础io下dup2实现输出重定向输入重定向追加重定向|理解磁盘|理解文件系统中inode的概念|软硬链接(代码片段)

写在前面这里先接着《基础IO上》中的缓冲区的内容作些补充,这里主要补充dup2接口。✔测试用例一:#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<unistd.h>intmain() clos 查看详情

linux系统编程:基础io下dup2实现输出重定向输入重定向追加重定向|理解磁盘|理解文件系统中inode的概念|软硬链接(代码片段)

写在前面这里先接着《基础IO上》中的缓冲区的内容作些补充,这里主要补充dup2接口。✔测试用例一:#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<unistd.h>intmain() clos 查看详情

理解inode以及软硬连接,和inode磁盘爆满的解决方案以及文件权限(代码片段)

理解Linux的软硬链接创建硬链接的命令[[email protected]data]#ln/data/f1/data/f2[[email protected]data]#ll-itotal1613-rw-r--r-- 2rootroot    0May1209:19f113-rw-r--r-- 2rootroot&n 查看详情

linux部分知识点总结(代码片段)

...。硬链接:ln目标文件名链接名,软连接:ln-s目标文件名软硬:共性:修改软硬链接文件,所有的文件都是同步修改的。硬链接:本质:同一个文件多个名字、链接数:有一个以上的链接,不可跨分区,只允许对文件创建链接,... 查看详情

linux软硬链接区别

(1)硬链接            一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。这意味着,可以用... 查看详情

linux基础io(代码片段)

...内存交互磁盘的分区与格式化Ext2文件系统的存储方案inode软硬链接软连接硬链接文件的三个时间系统文件IOopenopen接口的作用是打开文件。头文件及参数:#include<sys/types.h>#include<sys/stat.h># 查看详情