Linux_软硬链接

news2025/1/16 14:04:44

目录

1、软链接 

2、软链接的使用方式 

3、软链接的删除 

4、硬链接

5、硬链接的使用方式

6、软硬链接的使用场景

7、软硬链接的区别

结语


前言:

        在Linux操作系统中,有软链接和硬链接,他们是一种特殊的文件引用,主要用于与目标文件建立链接关系从而生成新的链接文件,并且访问该链接文件就能访问目标文件,给用户提供了多种访问文件的途径,方便了用户的使用,合理使用软硬链接能够有效的提高系统的效率。

1、软链接 

        软链接所生成的链接文件是一个独立的文件,该链接文件中保存的是目标文件的路径,他仅仅是一个快捷方式,文件内并不包含目标文件的内容。为什么说软链接生成的文件是一个独立的文件呢?因为该文件的文件标识符inode是唯一的,和目标文件的标识符不一样,如下图:


        生成软链接文件的指令:

ln -s 目标文件(可以是目录) 链接文件的名称
// -s表示创建的链接文件是软链接

        创建一个软链接:

         可以看到soft就是一个软链接文件,通过箭头可以发现他指向的文件是link.c,所以通过操作soft来间接的操作link.c。

2、软链接的使用方式 

        比如cat软链接文件就是cat 目标文件:


         当然快捷方式的存在意义就是直接通过运行快捷方式来运行程序本身,所以软链接一般链接的都是可执行程序,达到运行软链接文件即运行目标可执行程序的效果,测试如下:


         并且也可以通过软链接文件更改目标文件的内容: 

3、软链接的删除 

         若把目标文件删除,则软链接就不可用了,即无法对软链接进行以上的使用方式:


         此时soft链接文件就没有意义了,可以使用指令unlink对其删除:

unlink 要删除的链接文件

         测试结果:

4、硬链接

        如果说软链接像一个指针指向目标文件,那么硬链接就是目标文件的“别名”,他和软链接不一样的是硬链接所产生的链接文件和他指向的目标文件用的是同一块数据块,即他们的inode是相同的。

        生成硬链接文件的指令:

ln 目标文件 硬链接文件的名称

         测试硬链接如下:

         观察结果得到一个结论,两个文件的inode是一样的,说明链接文件是目标文件的“别名”,即可以把链接文件当作是目标文件的本体,并且对一个文件使用硬链接后会使目标文件和链接文件的引用计数都变成2,引用计数为2表示删除其中任意一个文件只会导致引用计数减1,并不会影响另一个文件的使用。

        结语:文件名只是方便用户查看文件则系统所使用的方法,实际上系统是根据inode来区分文件的,因此上图中hard.c这个文件名并不能表示底层真实的文件,他类似文件的外壳,inode才是用于标记底层文件的真实身份,所以399195才是文件本体,而上图中删除hard.c这个动作并没有把底层的真实文件删除,只是删除了其外壳(因为他进行了硬链接),399195文件依然存在并且可以访问和使用。

5、硬链接的使用方式

        软链接可以做到的使用方式硬链接也都可以做到,比如cat链接文件在上文中已经验实,硬链接的文件也可以通过编译生成可执行程序:


        并且也可以通过修改链接文件从而修改目标文件:

6、软硬链接的使用场景

硬链接的使用场景:

        1、由于硬链接是共用同一个inode,意味着硬链接不会创建新文件,则硬链接有着节省内存空间的优势,在需要拷贝一些较大的文件时可以使用硬链接代替拷贝。

        2、备份文件时也可以使用硬链接产生的链接文件作为备份。

软链接的使用场景:

        1、在一些程序的路径非常深的场景下,软链接则无需进入那么深的路径也可以直接运行程序。

        2、面对一些可能会随时更改路径的文件,软链接则可以保证随时都能找到他们。

        3、多个目录需要共用一个文件时,无需把该文件在每个目录下都拷贝一份,在各个目录下使用软链接指向该文件即可。

7、软硬链接的区别

        1、硬链接生成的文件和目标文件inode相同,软链接生成的文件和目标文件inode不同。

        2、硬链接不能连接目录(因为系统在遍历文件时会导致循环引用,从而破坏文件系统的结构),软链接可以连接目录。 

        3、删除硬链接的目标文件,则连接文件依旧可以正常使用,若删除软链接的目标文件,则连接文件不能正常使用了。

        4、硬链接文件不占内存,软链接文件占用若干字节内存。

        5、硬链接不能跨越不同的文件系统(因为每个inode是特定于系统的,而硬链接直接和inode打交道),软链接可以。

        6、软链接可以使用绝对路径和相对路径(因为软链接保存的是目标文件的路径),硬链接只能使用绝对路径(因为硬链接保存的是inode,系统用inode遍历文件用的是绝对路径)。

        7、软链接的指令是ln -s,硬链接是ln。

结语

        以上就是关于软硬链接的讲解,软硬链接像一种工具,方便了用户对文件的使用。综上所述,软硬链接各有优势,因此在使用软硬链接时需要分析当下的场景更适应于软连接还是硬链接。

        最后如果本文有遗漏或者有误的地方欢迎大家在评论区补充,谢谢大家!!  

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

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

相关文章

AGV机器人的调度开发分析(1)- 内核中的路线规划

准备开始写一个系列,介绍下AGV机器人的调度的开发和应用。 按照openTCS的核心内容,国内多家广泛应用于AGV的调度。那么架构图如下: Kernel中有一个是Routing,这是路由规划模块,需要实现的细节功能包括如下&#xff1a…

理解什么是DSR,嗅探器视角下的IP和MAC地址识别(C/C++代码实现)

网络嗅探器是监控和分析网络流量的一种工具,它能够捕获数据包并提取出关键的信息,比如IP地址和MAC地址。 网络嗅探器工作原理基于网卡的工作模式。正常情况下,网卡只处理发送给它的数据包,忽略其他数据。但是,如果将网…

Java程序之简单“记事本”

要求:如下图所示,记事本具有新建、打开文本、保存、关闭等功能。 算法思路: 这是一个使用Java Swing库创建的简单文本编辑器。它包含一个菜单栏,其中包含“文件”菜单以及四个子菜单项:“新建”、“打开”、“保存”和…

机器学习课程复习——集成学习

1. 基本概念 1.1. 定义 通过构建并结合多个个体学习器来完成学习任务,获得比单一学习器显著优越的泛化性能。 1.2. 分类 名称个体学习器例子同质集成基学习器Boosting、Bagging异质集成组件学习器Stacking1.3. 研究的核心 个体学习器的“准确性”和“多样性”本身就存在冲…

二叉树经典OJ练习

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 二叉树经典OJ练习 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 前置说…

三、MyBatis实践:提高持久层数据处理效率

三、MyBatis实践:提高持久层数据处理效率 目录 一、Mybatis简介 1.1 简介1.2 持久层框架对比1.3 快速入门(基于Mybatis3方式) 二、MyBatis基本使用 2.1 向SQL语句传参 2.1.1 mybatis日志输出配置2.1.2 #{}形式2.1.3 ${}形式 2.2 数据输入 2…

cesium 包络线

cesium 包络线 以下为源码直接复制可用 1、实现思路 通过turf.js中union方法来计算包络线官方地址:https://turfjs.fenxianglu.cn/ 闪烁线请查看cesium轨迹线(闪烁轨迹线) 2、示例代码 <!DOCTYPE html> <html lang="en"&g

SpringBoot配置第三方专业缓存技术Memcached 下载 安装 整合测试 2024年5000字详解

Memcached下载和安装 是一个国内使用量还是比较大的技术 打开文件夹 我们需要在命令行窗口启动 注意要以管理员方式运行 先尝试进入指定文件 然后又再次运行 下载 memcached.exe -d install 启动 memcached.exe -d start 停止 memcached.exe -d stop memcached.exe -d i…

Mysql数据库约束的概述 , 逐渐约束 , 主键自增 , 表关系的概念和外键 ,多表关系约束介绍和使用

约束和表设计 1、DQL查询语句-limit语句(掌握) 目标 能够掌握limit语句的使用 讲解 作用&#xff1a; LIMIT是限制的意思&#xff0c;所以LIMIT的作用就是限制查询记录的条数。 LIMIT语句格式: select * from 表名 limit offset, row_count; mysql中limit的用法&#…

轻松恢复丢失数据EasyRecovery你的数据守护神

数据丢失&#xff1f;别怕&#xff01;EasyRecovery来帮忙 大家好呀&#xff0c;今天我要分享一个我超级喜欢的数据恢复软件——EasyRecovery&#xff01;&#x1f389; 如果你也经历过误删文件、硬盘格式化或是意外丢失重要数据的尴尬和焦虑&#xff0c;那你一定要看看这个神器…

Bytebase 对接本地部署的 llama3 开启ChatSQL功能

Bytebase 是为开发人员、测试、DBA和运维工程师构建的数据库 DevOps 领域的&#xff0c;类 GitLab/GitHub 平台。 这篇文章主要关注 Bytebase SQL 编辑器中的 AI 增强功能。使用此功能您可以使用自然语言在 Bytebase SQL 编辑器中查询数据库。同时还能给出针对查询的索引建议&…

千呼新零售2.0【更新日志】持续更新ing

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货等连锁店使用。 详细介绍请查看下…

【CSS in Depth 2 精译】1.5 渐进式增强

文章目录 1.5 渐进式增强1.5.1 利用层叠规则实现渐进式增强1.5.2 渐进式增强的选择器1.5.3 利用 supports() 实现特性查询启用浏览器实验特性 1.5 渐进式增强 要用好 CSS 这样一门不断发展演进中的语言&#xff0c;其中一个重要的因素就是要与时俱进&#xff0c;及时了解哪些功…

HTML静态网页成品作业(HTML+CSS)——动漫猪猪侠网页(4个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有4个页面。 二、作品演示 三、代…

测试辅助工具(抓包工具)的使用4 之 断点

抓包作用3&#xff08;绕过界面限制测试&#xff09; 1.为什么要绕过界面限制做测试&#xff1f; 原因&#xff1a;界面限制导致部分异常数据无法输入 2.如何绕过界面限制做测试&#xff1f; 绕过界面限制直接测试服务器 步骤&#xff1a; 1.设置断点 2.修改请求 3.修改响应…

微型操作系统内核源码详解系列五(五):cm3下Pendsv切换任务上篇

系列一&#xff1a;微型操作系统内核源码详解系列一&#xff1a;rtos内核源码概论篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列二&#xff1a;微型操作系统内核源码详解系列二&#xff1a;数据结构和对象篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列…

React的路由(ReactRouter)-路由导航跳转

1.第一步 // createBrowserRouter路由 RouterProvider组件 import {createBrowserRouter,RouterProvider} from react-router-dom // 创建router实例对象&#xff0c;并配置路由对应关系 const routercreateBrowserRouter([{path:/login,element:<div>我是登录页</di…

grafana 通过自定义API获取数据

一、安装插件 安装infinity插件 二、配置数据源 三、配置图表 1、数据 这边提供一个go的demo package mainimport ("math/rand""net/http""time""github.com/gin-gonic/gin" )func main() {router : gin.Default()rand.Seed(time.…

浅谈红队攻防之道-office文件免杀

最完美的状态&#xff0c;不是你从不失误&#xff0c;而是你从没放弃成长。 ∙菜单栏&#xff1a;集成了Cobalt Strike的所有功能。 ∙快捷功能区&#xff1a;列出了常用功能。 ∙目标列表区&#xff1a;根据不同的显示模式&#xff0c;显示已获取权限的主机及目标主机。 ∙…

“序列优化探究:最长上升子序列的算法发现与应用“

最长上升子序列 最长上升子序列是指在一个给定序列中&#xff0c;找到一个最长的子序列&#xff0c;使得子序列中的元素单调递增。例如&#xff0c;序列 [1, 3, 5, 4, 7] 的最长上升子序列是 [1, 3, 5, 7]&#xff0c;长度为4。 这是一个经典的动态规划问题。 假设dp[i]表示…