【Linux】为什么创建目录文件,硬链接数是2;创建普通文件时,硬链接数是1?(超详细图文解答)

embedded/2024/10/18 0:42:06/

前言

大家好吖,欢迎来到 YY 滴Linux系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁
主要内容含:
在这里插入图片描述

欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!

  • YY的《C++》专栏
  • YY的《C++11》专栏
  • YY的《Linux》专栏
  • YY的《数据结构》专栏
  • YY的《C语言基础》专栏
  • YY的《初学者易错点》专栏
  • YY的《小小知识点》专栏
  • YY的《单片机期末速过》专栏
  • YY的《C++期末速过》专栏
  • YY的《单片机》专栏
  • YY的《STM32》专栏
  • YY的《数据库》专栏
  • YY的《数据库原理》专栏

目录

  • 一.前情回顾:
    • 1.查看文件元数据与inode编号
    • 2.硬链接文件不属于真正意义上的文件
    • 3.Linux中不允许用户对目录建立硬链接文件
  • 二.解析部分:
  • 三.理解原理后,试着分析<在newdir1下,再创建newdir2,newdir1硬链接数变成3>

一.前情回顾:

1.查看文件元数据与inode编号

  • 我们使用ls -l的时候看到的除了看到文件名,还看到了文件元数据。
[root@localhost linux]# ls -l
总用量 12
-rwxr-xr-x. 1 root root 7438 "9月 13 14:56" a.out
-rw-r--r--. 1 root root 654 "9月 13 14:56" test.c
  • 分别对应含义如下图所示
    在这里插入图片描述
  • 使用ls -li,还可以看到 inode编号
[root@localhost linux]# ls -l
总用量 12
54329 -rwxr-xr-x. 1 root root 7438 "9月 13 14:56" a.out

2.硬链接文件不属于真正意义上的文件

※为什么软连接是一个独立的文件而硬链接不是? 是因为软连接 有独立的inode编号。

  • 我们对test2创建一个硬链接文件test1.hard.link
  • 发现 二者inode编号一致
    在这里插入图片描述

3.Linux中不允许用户对目录建立硬链接文件

  • 为了1. 防止目录循环引用 2. 保护文件系统结构完整性 3.简化文件系统设计,Linux中不允许用户对目录建立硬链接文件

二.解析部分:

  • 我们分别创建一个普通文件testfile和一个目录文件testdirls -li查看源目录;
  • 发现创建目录,硬链接数是2;创建文件时,硬链接数是1

在这里插入图片描述

  • 普通文件,只有 文件名 和inode编号有映射关系 所以硬链接数为1
    在这里插入图片描述

  • 我们进入空目录,任何一个空目录, 下面都有两个隐藏的 硬链接文件

. 表示当前目录——————因为这个文件(指向)的inode,和目录文件本身的inode是同一个
..表示上一级目录

在这里插入图片描述

  • 所以目录文件,除了 文件名 和inode有映射关系 ,还有目录文件下面的硬链接. 和inode有映射关系 所以硬链接数为2
    在这里插入图片描述

三.理解原理后,试着分析<在newdir1下,再创建newdir2,newdir1硬链接数变成3>

  • 在newdir1下,再创建newdir2,发现newdir1的硬链接数变成了3
    在这里插入图片描述

  • 我们查看下newdir2的隐藏文件(硬链接),又有一个硬链接文件指向了他

在这里插入图片描述


http://www.ppmy.cn/embedded/127196.html

相关文章

SQL注入基础速通

<aside> &#x1f4a1; SQL速通 </aside> 注入点类型&#xff08;数字型&#xff0c;字符型&#xff09; 数字型&#xff1a;1 字符型&#xff1a;’ 和 ‘’ **数字型&#xff1a;?id1 and 11 ?id1 and 12 //报错为数字型字符型&#xff1a;?…

应用UX体验标准

1、应用导航 标准编号 2.1.1.1 系统返回 标准描述 所有界面都可以执行系统返回操作。 除一级界面外&#xff0c;所有全屏界面均需要提供返回/关闭/取消按钮。(全屏沉浸式场景除外) 测试方法 使用侧边返回手势&#xff0c;验证当前应用界面是否可以执行系统返回操作。检查…

Spring框架中的多重构造器选择:实例化对象的策略解析

在Spring框架中&#xff0c;依赖注入和对象实例化是核心功能之一。当我们在Spring容器中配置一个Bean&#xff0c;并且这个Bean类有多个构造器时&#xff0c;一个关键问题便浮现出来&#xff1a;当没有明确指定使用哪个构造器时&#xff0c;Spring是如何决定使用哪一个来实例化…

【C++】STL--list

1. list的介绍 list的文档介绍 2. list的使用 list中的接口比较多&#xff0c;此处类似&#xff0c;只需要掌握如何正确的使用&#xff0c;然后再去深入研究背后的原理&#xff0c;已 达到可扩展的能力。以下为list中一些常见的重要接口。 2.1 list的构造 // list的构造 vo…

【工具】HTTrack:网站一键克隆下载,实现离线浏览与备份的利器

什么是 HTTrack&#xff1f; HTTrack 是一款用于复制完整网站的开源工具&#xff0c;它可以从服务器下载整个网站的内容&#xff0c;包括 HTML 文件、图像、样式表、脚本等资源。通过这种方式&#xff0c;你可以在离线状态下浏览网站&#xff0c;就像在线一样。 HTTrack 支持…

【Adobe AE】Adobe After Effects 快捷键介绍

Adobe After Effects (简称AE) 是一款强大的视频合成和动态图形设计软件&#xff0c;掌握其快捷键能够极大提升工作效率。 WIN版本下载地址 mac版本下载地址 以下是AE中一些常用的快捷键及使用方法&#xff0c;这边我按照不同的功能分类进行了整理&#xff1a; 项目管理 新…

OpenAI 开源多智能体框架Swarm

毫无疑问&#xff0c;多智能体肯定是 OpenAI 未来重要的研究方向之一&#xff0c;前些天 OpenAI 著名研究科学家 Noam Brown还在 X 上为 OpenAI 正在组建的一个新的多智能体研究团队招募机器学习工程师。 就在几个小时前&#xff0c;这个或许还没有组建完成的新研究团队就已经开…

【GRACE-FO卫星简介】

GRACE-FO卫星是GRACE卫星计划的后续项目&#xff0c;由美国国家航空航天局&#xff08;NASA&#xff09;与德国地学研究中心&#xff08;GFZ&#xff09;合作研制。以下是对GRACE-FO卫星的详细介绍&#xff1a; GRACE-FO卫星是GRACE卫星计划的后续卫星&#xff0c;由NASA与GFZ合…