linux中,软硬链接的作用和使用

一、软硬链接的作用

        软硬链接,是大家所熟系的内容了。链接就是方便人使用电脑上访问文件、方便进程访问文件的工具。比如软连接大家都有见过,在安装某款软件的时候要不要添加快捷方式。在windows系统上,我们右键点击文件的时候按‘s’就能创建文件的快捷方式,这个就是软连接。硬链接在windows中的使用倒是少一些,不过之后会讲解硬链接的使用方法

1. 软链接

        根据windows中快捷方式的属性,我们能够理解,快捷方式中并不包含源文件中的内容。只是方便我们找到源文件的位置和打开它。

图1-1 软链接示意图

        如图1-1所示,在文件夹中“easy”和“hard”分别是“test.c”和“dir”的软连接。

2. 硬链接

        硬链接是修改了新文件名和iNode的映射关系。提到这里就不得不介绍一下inode的作用了。我们知道linux有文件管理系统,在这个系统下,我们可以通过文件名在磁盘中找到对应的内容。而inode记录的就是这些内容的位置和大小。在文件夹中会有文件名和inode的映射关系,我们在文件夹中就能够通过输入文件名,然后通过映射关系找到inode,再从inode找到对应的文件内容。而硬链接就是新建一个映射关系给inode和软连接中找到原文件的文件名是不一样的。

图1-2 硬链接示意图

        如图1-2所示,这里的“thard”是“test.c”的硬链接。和软连接相比,硬链接不容易看出来,但是如果查看inode会发现这两个文件的iNode号码相同,文件属性也相同。查看方式:在ls查看文件内容的时候增加“-i”选项。

图1-3 查看文件inode

3. 软硬链接的特性

        共同点:都能够通过链接的方式找到资源文件。

        不同点:硬链接如果删除原文件后仍然能够使用。软链接作为快捷方式,如果原文件被删除了之后将无法继续使用。这是因为硬链接增加了inode的映射关系而软链接没有。原文件删除之后,原来的文件名就找不到inode了,于是inode所记录的内容被自动销毁。软链接就找不到inode,但是硬链接仍然可以。这些在图1-3和1-1中可以看出,在建立硬链接后文件拥有者前面有个计数。这个计数就是inode和几个文件名有联系,如果删除一个硬链接或者原文件,那么这个计数会减一,而软链接不会。

        需要注意的是,软链接是单独的一类文件,属性在linux中是“l”。而硬链接就相当于复制了一份原文件,但是实际只是增加了对原文件inode进行了映射而已。

二、 软硬链接的使用方法

        首先,建立软硬链接都需要用到一项程序——“ln”。使用这个命令建立软硬链接,然后通过对应的命令行去选择它的行为。使用起来相当方便,接下来会细致讲解使用格式和注意事项。

1. 建立软链接

1.1. 使用格式

        ln  -s  目标路径  快捷方式名称

1.2. 使用举例

        对文件夹“dir”做一个软链接“r”。

图2-1 对文件夹进行软链接

        再比如说对应用文件建立“test.c”建立软链接rc。

图2-2 对应用进行软连接

        这样都建立完毕了,没有出错。

2. 建立硬链接

2.1. 使用格式

        ln  目标路径  快捷方式名称

        比软链接简单,硬链接就不需要更多的命令行参数了。

2.2. 使用举例

        硬链接不能使用程序主动建立文件夹的链接,如果要建立文件夹“dir”的硬链接“y”,那么将会报错。

图2-3 对文件夹建立硬链接报错

        这也是系统设计上的考虑,才不让建立文件夹的硬链接的。理由如下:

        不让用户建立上级目录的硬链接,防止形成环路径使查找找回上级目录,导致在环路径上循环查找,从而得不到所需的结果。

        在此之上系统自己会设计特殊的文件“.”和“..”这其实就是当前文件夹和上级目录的硬链接,文件夹的硬链接是存在的,所以为什么又会有呢?答案是系统自己认识“.”和“..”文件,查找的时候会跳过。同理软连接也会因为自己的文件性质是“l”而被查找跳过。这些也许在设计之初就被考虑到了。

        对应用文件建立硬链接倒是可以,比如对“test.c”建立硬链接“yc”。

图2-4 对应用建立硬链接

        可以看到文件属性后面的计数变为了3,这是因为建立了硬链接所以计数增加了。

        同时我们可以从图2-4中看到文件“.”的计数为3。这是因为“.”自己算一个,上级目录也记录了inode所以有一个,然后文件夹“dir”中有一个“..”也表示它,所以总计三个。

3. 删除链接

        对软硬链接的删除都能直接指定然后删除,例如这里将之前创建的链接“r”、“rc”、“yc”全部删除。

图2-5 删除链接

        如图2-5所示,用rm指定文件便删除完毕了。对于硬链接来说,计数也减少了,没有问题。

作者结语

        这个章节还是比较简单的,主要需要知道inode是用来维护文件的。文件的属性和大小都通过inode维护。具体inode怎么维护文件,在文件系统中有怎么样的地位,这又是一个比较枯燥的知识内容。毕竟这也是文件系统中一个比较小的模块,文件系统的组成太多了。不过,这些内容做了解也足够用了,有兴趣的小伙伴可以自己了解一下。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kalman滤波器C++设计仿真实例第三篇

1. 仿真场景 水面上有条船在做匀速直线航行,航行过程中由于风和浪的影响,会有些随机的干扰,也就是会有些随机的加速度作用在船身上,这个随机加速度的均方差大约是0.1,也就是说方差是0.01。船上搭载GPS设备,…

ubuntu20.04+RTX4060Ti大模型环境安装

装显卡驱动 这里是重点,因为我是跑深度学习的,要用CUDA,所以必须得装官方的驱动,Ubuntu的附件驱动可能不太行. 进入官网https://www.nvidia.cn/geforce/drivers/,选择类型,最新版本下载。 挨个运行&#…

[c语言日寄]浮点数在内存中的储存

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…

Yageo国巨的RC系列0402封装1%电阻库来了

工作使用Cadence多年,很多时候麻烦的就是整理BOM,因为设计原理图的时候图省事,可能只修改value值和封装。 但是厂家,规格型号,物料描述等属性需要在最后的时候一行一行的修改,繁琐又容易出错,过…

【文档智能】Qwen2.5-VL在版式分析和表格识别上的实际评测效果

qwen开年开源了Qwen2.5-VL系列权重模型,笔者观察到相较于传统的多模态系列,增加了文档理解功能。笔者以文档智能中两个比较重要的任务版式分析和表格识别,笔者直接测试下Qwen2.5-VL-72B的效果。 版式分析 case1 case2 这个case没有输出bbox…

【计算机组成原理】1_绪论

chap1 绪论 1. 国产芯片现状 MIPS阵营:龙芯X86阵营(常见于桌面和服务器):兆芯(VIA),海光(AMD)ARM阵营(常见于移动嵌入式、手机平板等)&#xff…

解锁反序列化漏洞:从原理到防护的安全指南

目录 前言 一、什么是反序列化 二、反序列化漏洞原理 三、反序列化漏洞的危害 (一)任意代码执行 (二)权限提升 (三)数据泄露与篡改 四、常见的反序列化漏洞场景 (一)PHP 反…

openGauss 3.0 数据库在线实训课程1:学习数据库状态查看

openGauss数据库状态查看 前提 我正在参加21天养成好习惯| 第二届openGauss每日一练活动 课程详见:openGauss 3.0.0数据库在线实训课程 学习目标 学习从操作系统层面和使用openGauss工具查看数据库的状态、版本和数据文件目录。 课程作业 gs_ctl是openGauss提…

[含文档+PPT+源码等]精品基于Python实现的django个性化健康餐计划订制系统

软件开发环境及开发工具: 开发语言:python 使用框架:Django 前端技术:JavaScript、VUE.js(2.X)、css3 开发工具:pycharm、Visual Studio Code、HbuildX 数据库:MySQL 5.7.26&am…

单机伪分布Hadoop详细配置

目录 1. 引言2. 配置单机Hadoop2.1 下载并解压JDK1.8、Hadoop3.3.62.2 配置环境变量2.3 验证JDK、Hadoop配置 3. 伪分布Hadoop3.1 配置ssh免密码登录3.2 配置伪分布Hadoop3.2.1 修改hadoop-env.sh3.2.2 修改core-site.xml3.2.3 修改hdfs-site.xml3.2.4 修改yarn-site.xml3.2.5 …

ZooKeeper单节点详细部署流程

ZooKeeper单节点详细部署流程 文章目录 ZooKeeper单节点详细部署流程 一.下载稳定版本**ZooKeeper**二进制安装包二.安装并启动**ZooKeeper**1.安装**ZooKeeper**2.配置并启动**ZooKeeper** ZooKeeper 版本与 JDK 兼容性3.检查启动状态4.配置环境变量 三.可视化工具管理**Zooke…

IMX6ULL环境搭建遇到的问题和解答更新

IMX6ULL环境搭建遇到的问题 开发板:正点原子IMX6ULL 终端软件串口控制:MobaXterm 1、网络环境搭建三方互ping不通 电脑无网口,使用绿联USB转网口,接网线直连开发板,电脑WiFi上网 按文档设置的 IP 地址,以…

Windows Docker笔记-Docker拉取镜像

通过在前面的章节《安装docker》中,了解并安装成功了Docker,本章讲述如何使用Docker拉取镜像。 使用Docker,主要是想要创建并运行Docker容器,而容器又要根据Docker镜像来创建,那么首当其冲,必须要先有一个…

51单片机07 串口通信

串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信。51单片机内部自带UART(Universal Asynchronous Recei…

外置互感器导轨式电能表

1 概述 1 Overview ADL系列导轨式多功能电能表,是主要针对于光伏并网系统、微逆系统、储能系统、交流耦合系统等新能源发电系统而设计的一款智能仪表,产品具有精度高、体积小、响应速度快、安装方便等优点。具有对电力参数进行采样计量和监测&#xff…

微软发布基于PostgreSQL的开源文档数据库平台DocumentDB

我们很高兴地宣布正式发布DocumentDB——一个开源文档数据库平台,以及基于 vCore、基于 PostgreSQL 构建的 Azure Cosmos DB for MongoDB 的引擎。 过去,NoSQL 数据库提供云专用解决方案,而没有通用的互操作性标准。这导致对可互操作、可移植…

开放式TCP/IP通信

一、1200和1200之间的开放式TCP/IP通讯 第一步:组态1214CPU,勾选时钟存储器 第二步:防护与安全里面连接机制勾选允许PUT/GET访问 第三步:添加PLC 第四步:点击网络试图,选中网口,把两个PLC连接起…

【漫画机器学习】083.安斯库姆四重奏(Anscombe‘s quartet)

安斯库姆四重奏(Anscombes Quartet) 1. 什么是安斯库姆四重奏? 安斯库姆四重奏(Anscombes Quartet)是一组由统计学家弗朗西斯安斯库姆(Francis Anscombe) 在 1973 年 提出的 四组数据集。它们…

【C语言】指针运算与数组关系:详细分析与实例讲解

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 💯前言💯1. 指针的基础运算1.1 指针的加减运算1.2 指针加整数与指针减整数1.3 指针与指针的运算 💯2. 指针的实际应用:模拟 strlen 函数2.1 使用指针模拟…

在线教程丨YOLO系列10年更新11个版本,最新模型在目标检测多项任务中达SOTA

YOLO (You Only Look Once) 是计算机视觉领域中最具影响力的实时目标检测算法之一,以其高精度与高效性深受业界青睐,广泛应用于自动驾驶、安防监控、医疗影像等领域。 该模型最早于 2015 年由华盛顿大学研究生 Joseph Redmon 发布,开创了将目…