【Linux】学习-文件的软硬链接

文件的软硬链接

在上一篇拓展篇—文件系统中我们介绍过文件元的概念:

image-20230925175431180

我们在使用ls -l命令查看文件元信息的时候,有一个硬链接数,说明文件的硬链接数属于文件的属性之一,那么硬链接究竟是什么呢?软链接又是什么呢?他们又有什么区别呢?下面我们就来介绍一下

软链接

我们可以通过命令:ln -s 创建一个文件的软链接:

image-20230926155911224

软链接有什么用

  • 软链接本质上是属于一个新的文件,他有自己的inode,而文件内容就是指向文件的执行路径。如果一个可执行程序在路径中藏得很深,每次执行时要么进到程序对应的目录下要么要携带路径太麻烦了,因此用软链接的方式可以快速执行,跟在windows下在桌面创建一个程序的快捷方式一个道理

没创建软链接时执行:

!image-20230926160812445

创建软链接后:

image-20230926160940461

则可以在当前路径下很方便的执行程序

硬链接

我们可以通过ln 命令创建硬链接:

image-20230926163221657

硬链接有什么用?

硬链接创建的文件并不是一个独立的文件,他是与关联文件共享一个inode,说白了就是给文件起了一个别名,而文件元所显示的硬链接数就是此文件对应的inode下所有映射文件名的文件数。

有硬链接的文件被删除时会发生什么?

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

软硬链接区别

软链接的inode

我们通过ls -i 命令来观察软链接创建的文件:

image-20230926165729132

我们观察到,这两个文件的inode编号是不一样的,也就是说他们是不同的文件,有着不同的属性

  • 软链接有着独立的inode!

硬链接的inode

同样的,通过命令 ls -i 观察:

image-20230926170017119

我们观察到,这两个文件有着相同的inode编号,所以创建硬链接的本质就是在指定的目录下,建立了文件名和指定inode的映射关系,也就是一个inode对应了多个文件名,给文件起了个别名,仅此而已!在命令ls -l 下能查看硬链接数,其实就是查看此文件的inode一共映射有多少个文件名!

image-20230926170309805

同一inode下有两个文件名,因此硬链接数为2。本质上这是一个引用计数,当新建映射时++,删除时则–,减到0时此inode才会正式被回收。

软硬链接的区别:

  • 软链接有独立inode,硬链接没有

为什么空目录的硬链接数为2?

  • 目录本身自己是一个映射
  • 目录内部有一个隐藏文件:当前文件 “.” 也是一个映射

image-20230926172000751

image-20230926172024244

如果目录内存放有n个目录的话,则硬链接数为2+n,因为目录内还有一个隐藏文件:“…"上级目录,也是与inode的一个映射

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

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

相关文章

Spring AI - 使用向量数据库实现检索式AI对话

Spring AI - 使用向量数据库实现检索式AI对话 Spring AI 并不仅限于针对大语言模型对话API进行了统一封装,它还可以通过简单的方式实现LangChain的一些功能。本篇将带领读者实现一个简单的检索式AI对话接口。 一、需求背景 在一些场景下,我们想让AI根据…

华为机考入门python3--(10)牛客10-字符个数统计

分类:字符 知识点: 字符的ASCII码 ord(char) 题目来自【牛客】 def count_unique_chars(s): # 创建一个空集合来保存不同的字符 unique_chars set() # 遍历字符串中的每个字符 for char in s: # 将字符转换为 ASCII 码并检查是否在范围内 #…

KEIL-MDK的时间戳之time.h 结合gd32f1的RTC应用

KEIL-MDK的时间戳之time.h 的应用 1 时间戳介绍 现在物联网产品的在进行通讯的时候,需要加入时间戳的这个信息参数,方便服务器和产品之间交换时间信息。 时间戳是计算机系统中用来表示日期和时间的一种方式,通常是一个数字或者一串字符&am…

[优雅的面试] 进程 线程 协程分的清

面试官大佬:小伙子,咱今儿个先聊聊进程线程这块的知识哈,就先说说进程吧。 我:存储在硬盘中的代码是静态文件,运行中的程序被称为进程。进程之间数据是相互隔离的。 一般说来,一个进程并不是自始至终连续不…

Vits2.3-Extra-v2:中文特化,如何训练及推理(新手教程)

环境: Vits2.3-Extra-v2:中文特化修复版 auto_DataLabeling 干声10分钟左右.wav 问题描述: Vits2.3-Extra-v2:中文特化,如何训练及推理(新手教程) 解决方案: 一、准备数据集 切分音频 本次音频数据…

管理就是闭环

管理是什么?这个问题没有一个统一的答案。本文提供一个管中窥豹的答案:管理就是闭环。 作为基层管理者,日常管理事务,一个是目标闭环,一个是执行闭环。这分别对应敏捷PO和Scrum Master的职责。PO的职责是确保目标闭环&…

猫头虎分享已解决Bug ‍ || TypeError: props is not a function (React)

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

05.坐标系

1. 坐标系原点 坐标系原点就是屏幕/窗口的左上角,X向右增长,Y向下增长。 2.设置控件位置 设置控件位置,就相当于是需要指定控件的坐标,对于该控件来说,其坐标原点是其父窗口/父控件的左上角。 设置方法就是通过控件的…

创新S3存储桶检索:Langchain社区S3加载器搭载OpenAI API

在瞬息万变的数据存储和处理领域,将高效的云存储解决方案与先进的 AI 功能相结合,为处理大量数据提供了一种变革性的方法。本文演示了使用 MinIO、Langchain 和 OpenAI 的 GPT-3.5 模型的实际实现,重点总结了存储在 MinIO 存储桶中的文档。 …

leetcode:62.不同路径

动态规划 注意&#xff1a;用深搜或者广搜会超时 dp含义dp[i,j]&#xff1a;从&#xff08;0&#xff0c;0&#xff09;到&#xff08;i&#xff0c;j&#xff09;的路径个数 递推公式&#xff1a;dp[i][j] dp[i-1][j] dp[i][j-1] 初始化&#xff1a;for(i 0,i<m,i) …

[职场] 面试被问优点的回答参考 #知识分享#其他#学习方法

面试被问优点的回答参考 当面试官问你最大的优点是什么&#xff1f;回答1&#xff1a; 我擅长合理地安排时间&#xff0c; 作为助理&#xff0c; 我的杂事很多&#xff0c; 总是觉得手边有做不完的事情&#xff0c; 所以我特别注意时间管理&#xff0c; 这样才能高效地工作&am…

继承

1.继承的作用 有些类与类之间存在特殊关系&#xff0c;下级别的成员除了拥有上一级别的共性&#xff0c;还有自己的特性。 这个时候我们就可以考虑利用继承技术&#xff0c;减少重复代码。 总结&#xff1a; 继承的好处&#xff1a;可以减少重复的代码 class A : public B;…

猫头虎分享已解决Bug || KeyError: ‘The truth value of a Series is ambiguous‘

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

EasyExcel动态列导出

测试代码地址&#xff1a;https://gitee.com/wangtianwen1996/cento-practice/tree/master/src/test/java/com/xiaobai/easyexcel/dynamiccolumn 官方文档&#xff1a;https://easyexcel.opensource.alibaba.com/docs/2.x/quickstart/write 一、实现方式 1、根据需要导出的列…

假期刷题打卡--Day26

1、MT1212乘法表 请编写一个简单程序&#xff0c;输出九九乘法表。输入n&#xff0c;就输出乘法表到n的地方。 格式 输入格式&#xff1a; 输入整型 输出格式&#xff1a; 输出整型。形式如&#xff1a;1*11 样例 1 输入&#xff1a; 5输出&#xff1a; 1*11 2*12 …

vue3项目中的404页面

vue3项目中的404页面 春节前的最后一篇技术博客了 写了不少vue项目&#xff0c;发现一直没有正确处理404页面。404页面的出现有这么几种可能&#xff1a; 错误输入了页面地址路由连接跳转时&#xff0c;某些路由已经不存在了&#xff0c;而程序员并没有正确处理 也就是说40…

CSS基础---新手入门级详解

CSS:层叠样式表 CSS&#xff08;Cascading Style Sheets,层叠样式表&#xff09;&#xff0c;是一种用来为结构化文档添加样式&#xff08;字体、间距和颜色&#xff09;的计算机语言&#xff0c;css扩展名为.css。 实例: <!DOCTYPE html><html> <head><…

OpenAI---提示词工程的6大原则

OpenAI在官方的文档里上线了Prompt engineering&#xff0c;也就是提示词工程指南&#xff0c;其中OpenAI有提到写提示词的6条大的原则&#xff0c;它们分别是&#xff1a; &#xff08;1&#xff09;Write clear instructions&#xff08;写出清晰的指令&#xff09; &#xf…

STM32CubeMX,定时器之定时功能,入门学习,如何设置prescaler,以及timer计算PWM输入捕获方法(重要)

频率变小&#xff0c;周期变长 1&#xff0c;参考链接&#xff08;重要&#xff09; STM32CubeMX——定时器之定时功能&#xff08;学习使用timer定时器的设置&#xff09; STM32测量PWM信息&#xff08;学习使用设置pwm输入捕获&#xff09; 通用定时器中两个重要参数的设置心…

Pytorch+NCCL源码编译

目录 环境1. 安装cudnn2. 使用pytorch自带NCCL库进行编译3. 修改NCCL源代码并重新编译后测试&#xff0c;体现出源码更改 环境 Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-91-generic x86_64)cuda 11.8 cudnn 8python 3.10torch V2.0.1 nccl 2.14.3NVIDIA GeForce RTX 4090 *2 1.…