linux中的软、硬链接
目录
引言
简单介绍
如何理解软硬链接
链接的应用
环路问题
引言
在Linux操作系统的广阔天地中,文件管理是其核心功能之一。而软链接和硬链接作为Linux文件系统中的两种特殊链接方式,它们为用户提供了灵活的文件访问途径和高效的磁盘空间利用手段。对于深入理解和掌握Linux系统,掌握软硬链接的概念及其应用至关重要。接下来,让我们共同探索Linux世界中的软硬链接,揭示它们背后的工作原理及操作技巧。
本文将着重介绍以下几个方面:1.先简单介绍一下软硬链接 2.如何去理解软硬链接 3.其他问题补充
简单介绍
软链接:
ln:link
-s :soft软链接
可以看到两个文件具有不同的inode编码,是不同的文件。
建立硬链接:
去掉-s就是建立硬链接。
可以发现到硬链接与原来的文件出现了相同的inode码,因此硬链接建立的文件其实是和原来的文件一个文件。
硬链接不是一个独立的文件,他没有独立的inode
如何理解软硬链接
软链接(也称为符号链接,Symbolic Link)和硬链接是Linux文件系统中的两种不同类型的链接,它们提供了一种方式来指向文件系统中的其他文件。
原理和区别:
硬链接(Hard Link)
基本概念:硬链接是文件系统中的一个目录条目,它指向文件系统中的同一个inode(索引节点)。inode 包含了文件的元数据,如文件的大小、创建时间、最后修改时间等,以及指向文件数据块的指针。
特性:
硬链接与原始文件几乎相同,它们共享相同的inode号和文件数据。
对硬链接的修改会影响到原始文件,反之亦然。
删除硬链接或原始文件不会立即删除文件的数据,只有当所有硬链接都被删除后,文件的数据才会被删除。
硬链接不能跨文件系统创建。
硬链接不能指向目录。
用途:硬链接常用于备份重要文件,因为它们可以保护文件不被意外删除。
软链接(Symbolic Link 或 Symlink)
基本概念:软链接是一个特殊的文件,它包含了一个指向另一个文件或目录的路径。软链接类似于Windows中的快捷方式。
特性:
软链接有自己的inode号和文件属性,但它的大小是路径字符串的长度。
对软链接的修改不会影响原始文件,它们是独立的实体。
如果原始文件被删除,软链接将变成“悬挂链接”(dangling link),指向一个不存在的文件。
软链接可以跨文件系统创建。
软链接可以指向目录。
用途:软链接常用于创建指向复杂路径的快捷方式,或者在不改变现有软件配置的情况下,指向新的文件位置。
总结
硬链接:是文件的另一个名称,指向同一个inode和数据块,不能跨文件系统,不能指向目录。
软链接:是一个独立的文件,包含指向另一个文件的路径,可以跨文件系统,可以指向目录。
理解软硬链接的关键在于认识到硬链接与原始文件实际上是同一个文件的不同名称,而软链接则是一个独立的文件,它只是指向另一个文件的位置。
链接的应用
理解硬链接(取别名)
所谓建立硬链接,其实就是在特定目录的数据块中,增加了inode与文件名的一条映射信息。
这一栏的数据其实就是文件的硬链接数。
在每一个inode内部,都存在一个引用计数器。
这个引用计数器表明的就是,有多少个文件指向了这个inode
删除链接:unlink
软链接(快捷方式)
我们写一个hello world程序,可以探讨一下什么是软链接。
当我们执行t1的时候,必须指明路径,当我们在PATH包含的路径下建立软链接(快捷方式)之后,这样直接使用快捷方式,就可以获得t1的执行效果。
需要注意的是:我们需要用绝对路径,以保证路径的正确性。
理解硬链接数
我们建立一个空目录,可以发现硬链接数为2
原因:
当我们进入dir1之后,发现内部存在一个../的隐藏文件,这样就存在两个文件指向dir1,因此硬链接数为2。
当我们在内部每新建一个一级子目录时,都会多一个../,都会导致目录的硬链接数++。
不允许手动给目录增加硬链接,可以定义软链接。
环路问题
如果我们想查找在这个目录树中的某个文件,一旦出现了对根目录root的硬链接,那么在进入子目录查找文件时,就会多出来一个root。
这样会导致环路的形成。
虽然有../和./,但是系统在做搜索时,不会对这两个文件进行搜索。
相关文章:

linux中的软、硬链接
目录 引言 简单介绍 如何理解软硬链接 链接的应用 环路问题 引言 在Linux操作系统的广阔天地中,文件管理是其核心功能之一。而软链接和硬链接作为Linux文件系统中的两种特殊链接方式,它们为用户提供了灵活的文件访问途径和高效的磁盘空间利用手段。…...

Ubuntu 系统、Docker配置、Docker的常用软件配置(下)
前言 书接上文,现在操作系统已经有了,作为程序的载体Docker也安装配置好了,接下来我们需要让Docker发挥它的法力了。 Docker常用软件的安装 1.Redis 缓存安装 1.1 下载 docker pull redis:7.4.1 #可改为自己需要的版本 1.2 创建本地目录存储…...
jdk,openjdk,oraclejdk
Java是开发语言,不是软件。JDK是软件,使用OpenJDK是免费的,一直免费。而且OpenJDK正儿巴经的Java社区推出来的JDK。 Oracle JDK主要是面向付费能力强的企业用户,收费已经好多年了,不是一两年的事,JDK8是JDK…...
Docker Hub 镜像加速器
零、参考资料 https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6Daemon proxy configuration | Docker Docs 一、解决方案 1、问题现象 Error response from daemon: Get "https://index.docker.io/v1/search?qcarlasim%2Fcarla&n25": dia…...

DevOps赋能:优化业务价值流的实战策略与路径(上)
上篇:价值流引领与可视化体系构建 一、前言 在快速迭代的软件项目和产品开发生态中,我们始终围绕两个核心目标:一是确保每一项工作都能为客户创造实际价值,这是产品团队的核心使命;二是确保这些有价值的工作能够高效…...

int的取值范围
原码(True form):原码是一种计算机中对数字的二进制表示方法,数码序列中最高位为符号位,符号位为0表示正数,符号位为1表示负数;其余有效值部分用二进制的绝对值表示。 反码…...
图文检索(16):IDC: Boost Text-to-Image Retrieval via Indirect and Direct Connections
IDC: Boost Text-to-Image Retrieval via Indirect and Direct Connections 摘要3 方法3.1 直接连接3.2 间接连接3.3 DLB 正则化 结论 发布时间(2024 LREC-COLING) 标题:IDC:通过间接和直接连接增强文本到图像的检索 摘要 本文&…...

企业数字化转型:重识、深思、重启新征程-亿发
在当下这个日新月异的时代,企业数字化转型已然成为众多企业竞相追逐的发展方向,可真正能将其领悟透彻并有效落地实施的企业,却并非比比皆是。此刻,亿发软件针对企业数字化转型展开一次更为深入的重识、全面的深思,进而…...
仓颉刷题录-字符串数字转换(一)
文章目录 背景题目:交换后字典序最小的字符串个人感受 这是双子专栏: Cangjie仓颉程序设计-个人总结 本专栏还在持续更新: 仓颉编程cangjie刷题录 背景 报名了一个仓颉的比赛,感觉条件要求挺低的,就想上。哈哈哈。但…...

SpringBoot【实用篇】- 配置高级
文章目录 目标:1.ConfigurationProperties2.宽松绑定/松散绑定3. 常用计量单位绑定4.数据校验 目标: ConfigurationProperties宽松绑定/松散绑定常用计量单位绑定数据校验 1.ConfigurationProperties ConfigurationProperties 在学习yml的时候我们了解…...

liunx CentOs7安装MQTT服务器(mosquitto)
查找 mosquitto 软件包 yum list all | grep mosquitto出现以上两个即可进行安装,如果没有出现则需要安装EPEL软件库。 yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm查看 mosquitto 信息 yum info mosquitto安装 mosquitt…...

【银河麒麟高级服务器操作系统】虚拟机lvm分区丢失现象分析及解决建议
了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://documentkylinos.cn 环境描述 系统环境 物理机/虚拟机/云/容器 虚拟…...
Android 原子性类型都有哪些
1. 基本类型原子类 AtomicInteger:用于对整数进行原子操作,如incrementAndGet()方法可以原子地将当前值加1并返回新值,getAndSet()方法可以原子地设置新值并返回旧值。AtomicLong:和AtomicInteger类似,用于长整型的原…...

MySQL(上)
一、SQL优化 1、如何定位及优化SQL语句的性能问题?创建的索引有没有被使用到?或者说怎么才可以知道这条语句运行很慢的原因? 对于性能比较低的sql语句定位,最重要的也是最有效的方法其实还是看sql的执行计划,而对于mysql来说&a…...

ffplay 实现视频流中音频的延迟
ffplay -rtsp_transport tcp -i rtsp://admin:1234qwer192.168.1.64:554/Streaming/Channels/101 -vn -af "adelay5000|5000"在这个命令中: -vn 参数表示只播放音频。 -af "adelay5000|5000" 参数表示将音频延迟5000毫秒(即5秒&…...
CSDN资源变现
根据搜索结果,CSDN资源变现主要有以下几种方式: 1、上传付费资源: 用户可以在CSDN上上传资源并设置付费,其他用户支付费用下载这些资源,上传者则获得一部分收益。这种方式适合上传大量资源,通过量变达到质变…...

Rembg模型构建教程
一、介绍 Rembg,全称为“Remove Background”,是一款基于深度学习的图像背景去除工具。它的主要功能是通过智能识别图像中的前景物体,并将其从背景中分离出来,从而创建具有透明背景的图像。 二、基础环境 系统:Ubun…...

向量的基础知识和矩阵向量的坐标旋转
向量的基础: 定义: 既有大小,又有方向的量叫做向量(Vector)。 在几何上,向量用有向线段来表示,有向线段长度表示向量的大小,有向线段的方向表示向量的方向。其实有向线段本身也是向…...

GeoSever发布图层(保姆姬)
发布服务的具体步骤。 1. 安装 GeoServer 下载 GeoServer 安装包:GeoServer 官网按照安装说明进行安装,可以选择 Windows、Linux 或其他平台。 2. 启动 GeoServer 启动 GeoServer 通常通过访问 http://localhost:8080/geoserver 进行。默认用户名和密…...

AI 大模型的发展趋势是怎样的?
AI 大模型的发展趋势呈现出多方面的特点,包括技术、应用、商业模式等多个维度,具体如下: 技术层面: 多模态融合:未来,AI 大模型将不断加强对多模态数据的处理能力,融合文本、图像、音频、视频等…...

高保真组件库:数字输入框
拖入一个文本框。 拖入一个矩形,作为整个数字输入框的边框,边框颜色为灰色DCDEE2,圆角半径为4。 拖入一个向上的箭头图标作为增加按钮,再拖入一个矩形,将向上箭头图标放入矩形内。矩形:18x15,边框颜色DCDEE2,边框左下可见,箭头图标:8x5,矩形置底,组合在一起命名”增…...

C++学习-入门到精通【16】自定义模板的介绍
C学习-入门到精通【16】自定义模板的介绍 目录) C学习-入门到精通【16】自定义模板的介绍前言一、类模板创建一个自定义类模板:Stack\<T\> 二、使用函数模板来操作类模板特化的对象三、非类型形参四、模板类型形参的默认实参五、重载函数模板 前言…...
Python 函数全攻略:函数基础
函数(Functions)基础 什么是函数? 一个命名的代码块,代指一大堆代码。 定义: def function_name(): (使用def关键字,英文括号,冒号,缩进代码块)。 执行/调用: function…...
白银6月想法
一、市场回顾 2025年5月,SHFE白银主力合约总体呈现出震荡偏强的运行格局。从2025年5月1日至2025年5月30日,白银期货价格整体运行在7944元至8342元区间内,最高价出现在5月22日的8342.0元,最低价则为5月15日的7944元。最终在5月30日…...

跨平台资源下载工具:res-downloader 的使用体验
一款基于 Go Wails 的跨平台资源下载工具,简洁易用,支持多种资源嗅探与下载。res-downloader 一款开源免费的下载软件(开源无毒、放心使用)!支持Win10、Win11、Mac系统.支持视频、音频、图片、m3u8等网络资源下载.支持视频号、小程序、抖音、…...

2025年06月07日Github流行趋势
项目名称:netbird 项目地址url:https://github.com/netbirdio/netbird项目语言:Go历史star数:14824今日star数:320项目维护者:mlsmaycon, braginini, pascal-fischer, lixmal, pappz项目简介:使…...
OpenWrt:使用ALSA实现边录边播
ALSA是Linux系统中的高级音频架构(Advanced Linux Sound Architecture)。目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的知识,详见:http://www.alsa-project.org 在内核设备驱动层,ALSA提供…...

如何在mac上安装podman
安装 Podman 在 macOS 上 在 macOS 上安装 Podman 需要使用 Podman 的桌面客户端工具 Podman Desktop 或通过 Homebrew 安装命令行工具。 使用 Homebrew 安装 Podman: (base) ninjamacninjamacdeMacBook-Air shell % brew install podman > Auto-updating Hom…...
OpenCV 键盘响应来切换图像
一、知识点 1、int waitKey(int delay 0); (1)、等待按键。 等待指定的毫秒数,返回按键的ASCII码。 (2)、返回值: int型,表示按键ASCII码。 若没有按键,指定时间过去,返回-1。 (3)、参数delay: 等待时间,单位毫…...

Model Context Protocol (MCP) 是一个前沿框架
微软发布了 Model Context Protocol (MCP) 课程:mcp-for-beginners。 Model Context Protocol (MCP) 是一个前沿框架,涵盖 C#、Java、JavaScript、TypeScript 和 Python 等主流编程语言,规范 AI 模型与客户端应用之间的交互。 MCP 课程结构 …...