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 大模型将不断加强对多模态数据的处理能力,融合文本、图像、音频、视频等…...
告别手动点鼠标!用Python脚本批量跑Simulink仿真,效率提升10倍
告别手动点鼠标!用Python脚本批量跑Simulink仿真,效率提升10倍 在工程仿真领域,Simulink无疑是建模与分析的利器。但当面对参数扫描、蒙特卡洛分析或设计迭代等需要大量重复仿真的场景时,手动操作不仅效率低下,还容易…...
3大核心价值!六音音源开源工具:洛雪音乐跨版本修复解决方案
3大核心价值!六音音源开源工具:洛雪音乐跨版本修复解决方案 【免费下载链接】New_lxmusic_source 六音音源修复版 项目地址: https://gitcode.com/gh_mirrors/ne/New_lxmusic_source 在数字音乐体验日益依赖软件生态的今天,洛雪音乐1.…...
微信H5支付v3版Java实战:从零构建移动端支付解决方案
1. 微信H5支付的应用场景与优势 移动端支付已经成为现代商业不可或缺的一部分。微信H5支付作为微信支付生态中的重要一环,特别适合那些需要在非微信客户端浏览器中实现支付功能的场景。想象一下这样的画面:用户在手机浏览器中浏览你的电商网站ÿ…...
算法模拟类题目解析
前言:最近开始偏系统的从简单到难一步步刷算法题,先从模拟题开始,下边附带题目与连接,感兴趣可刷刷也可看看我的思路。 一.字符串展开 链接:https://ac.nowcoder.com/acm/problem/16644 来源:牛客网 题意…...
别再只看波形了!用Maxwell+Matlab深度分析电机空载气隙磁密的谐波极对数分布
电机电磁设计进阶:从Maxwell FFT到Matlab谐波极对数分析的工程实践 在电机设计领域,空载气隙磁密的谐波分析一直是评估电磁性能的核心手段。传统方法往往止步于波形观察和简单频谱分析,却忽略了谐波极对数分布这一关键维度——它直接关联着电…...
Z-Image-Turbo-辉夜巫女数据预处理实战:模拟VLOOKUP实现提示词与风格模板匹配
Z-Image-Turbo-辉夜巫女数据预处理实战:模拟VLOOKUP实现提示词与风格模板匹配 你有没有遇到过这样的烦恼?每次用AI画图,想生成一个“赛博朋克”风格的图片,都得重新回忆或者翻找之前写好的那一长串复杂的提示词。或者团队里每个人…...
OBS Advanced Timer:全场景直播计时神器,让你的直播节奏掌控自如
OBS Advanced Timer:全场景直播计时神器,让你的直播节奏掌控自如 【免费下载链接】obs-advanced-timer 项目地址: https://gitcode.com/gh_mirrors/ob/obs-advanced-timer 作为主播,你是否曾因手动计时失误导致直播环节超时ÿ…...
AgentCPM-Report研报系统实操:Pixel Epic贤者响应延迟优化教程
AgentCPM-Report研报系统实操:Pixel Epic贤者响应延迟优化教程 1. 认识Pixel Epic智识终端 Pixel Epic是一款基于AgentCPM-Report大模型构建的创新研究报告辅助系统。与传统AI工具不同,它将枯燥的科研过程转化为一场像素风格的RPG冒险。在这个系统中&a…...
保姆级教程:用华为eNSP复现一个能跑通的企业网毕业设计(含VRRP、OSPF、防火墙策略)
华为eNSP企业网实战:从零构建高可用网络架构 刚接触网络工程的学生或初级工程师,面对企业级网络设计时常常陷入配置迷雾——为什么这里要用VRRP?OSPF区域划分的依据是什么?防火墙策略如何与NAT协同工作?本文将以华为eN…...
CasADi实战:用Python搞定机器人路径规划中的数值优化问题(附IPOPT配置)
CasADi实战:用Python搞定机器人路径规划中的数值优化问题(附IPOPT配置) 机器人路径规划的核心在于如何在复杂环境中找到一条既安全又高效的轨迹。这本质上是一个带约束的数值优化问题——我们需要最小化某种代价函数(如路径长度或…...
