linux入门---软硬链接

news2024/9/22 17:28:01

软链接

使用指令ln -s 被链接的文件 生成的软链接文件 便可以创建软连接文件,ln是link的简写表明当前要创建链接文件,s是soft的简写表明当前创建的链接文件为软链接文件,然后加上被链接的文件,最后写上生成的链接文件的文件名比如说下面的图片:

在这里插入图片描述
这里生成了一个软链接文件,并且使用ls -l指令显示文件时会将这个文件所链接的文件也显示出来,使用指令ls -li指令可以查看每个文件对应的inode
在这里插入图片描述
通过上面的图片可以看到软链接文件有一个属于自己的inode ,并且soft_mycode.link文件的属性也和源文件mycode不相同,比如说soft_mycode.link的权限为0777文件大小为6但是mycode文件的权限为0775大小为8360,那么这就说明当我们使用ln指令-s指令创建软连接文件时操作系统会给我们创建一个文件,这个文件有自己的属性和inode,虽然这个soft_mycode.link文件是新创建的,但是这个文件的执行结果却和源文件mycode是一样的比如说下面的图片:
在这里插入图片描述
那么这就是创建软链接的方法以及软连接的部分属性。

硬链接

单独使用ln不加选项就可以创建硬链接文件:ln 源文件 生成的硬链接文件比如说下面的图片:
在这里插入图片描述
使用ls -li指令查看inode可以看到下面的现象:
在这里插入图片描述
我们发现硬链接文件的inode和原文件是一样的,但是软链接创建出来的文件inode和源文件是不一样的,所以软硬链接最根本的区别是:是否具有独立额度inode。软链接具有独立的inode可以被当做独立的文件看待,硬连接没有独立的inode所以不能被当做独立的文件来看待,硬连接的文件的inode和各种属性都和源文件相同,往源文件里面输入内容时源文件的大小不仅会发生改变而且硬链接文件的大小也会发生改变,比如说下面的操作:

在这里插入图片描述
一开始mycode.c文件大小为146,hard_mycode.link文件的大小也为146,我们使用vim工具往mycode.c文件里面写入数据之后mycode.c文件的大小变成了263,但是hard_mycode.link文件的大小也变成了263,但是上述操作对软连接执行一遍的话是不会发生改变,因为软连接链接的是生成的可执行程序,mycode可执行程序的大小为8360,soft_mycode.link文件的大小为6,使用make指令生成一个新的mycode程序再看看这里的属性的话就可以看到mycode可执行程序的大小发生了变化,但是soft_mycode.link文件的大小却没有任何变化:
在这里插入图片描述
那么这就更加说明了一点使用ln指令创建硬链接文件时根本没有创建新文件(因为没有分配独立的inode并且文件的性质还和源文件一摸一样),既然没有创建文件那么硬链接文件一定没有自己的属性集合和内容集合,所以他用的是源文件的inode和内容,之前我们讲过目录的数据块里面记录着文件名和inode的映射关系,而创建硬链接文件本质上就是在目录的数据块里面添加一个新文件名,并把该文件名指向的inode填入源文件的inode,所以一个inode可能会被多个文件名指向,所以在inode里面有个计数器,如果有一个文件指向这个inode的话,这个计数器的值就会加1,我们把一个对象里面有一个变量,这个变量用来表示有多少文件指向我的变量称为引用计数,也可以把他称为硬连接数,比如说当前的有两个文件名指向inode为1181179的文件
在这里插入图片描述

那么这个文件的计数器的值就为2,当我们吧mycode.c文件删除再查看文件属性时可以发现hard_mycode.link文件的链接数就变成了1
在这里插入图片描述
但是硬连接文件的内容和大部分属性都和之前没有变化,说明之前删除文件的时候并没有真正删除,只是删除了指向inode的一个文件名,只有当一个文件的硬链接数变成0时才会真正的删除一个文件,上述的过程也可以看做成给文件换了一个名字。删除源文件硬连接文件可以正常使用,但是删除软链接的源文件,软连接便无法正常使用比如说下面的操作,给一个文件创建一个硬链接和软链接,然后删除源文件就可以看到下面的现象:
在这里插入图片描述

硬链接可以正常使用,但是软链接已经发出警告无法正常使用了,而上面的删除并不是真正的删除文件名虽然不存在了但是文件的inode依然是存在的,那么这就说明软连接在查找源文件时根本不是通过文件的inode查找文件而是通过文件名来查找的文件,而在树状结构中查找一个文件名的方式就是通过绝对路径或者相对路径的方式进行查找,软连接也是一个文件他也有对应的数据块,所以在软连接文件的数据块里面就只保存着原文件的路径,这就是为什么删除源文件的文件名但是不删除inode软连接会失效的原因。

软连接的作用:

软链接的作用就是快速的执行另外一个路径的程序建立快捷方式。比如说当前的路径为:
在这里插入图片描述
我们可以创建一个mycode.c文件并往这个文件里面写入一些代码使其能够生成一个可执行程序,比如说下面的代码:
在这里插入图片描述
然后我们就可以前往一个其他路径比如说在当前路径下再创建一连串的目录,并前往最深处的目录,比如说当前的路径如下:
在这里插入图片描述
我们可以在这个路径下创建一个软链接,这个链接指向的是上面生成的那个程序:
在这里插入图片描述
那么我们就可以在当前路径中执行其他路径的程序,执行的结果如下:
在这里插入图片描述
这就是软连接的作用:创建其他路径的快捷方式。

硬链接的问题

为什么普通文件的硬连接的数是1?因为一个普通文件本身有一个文件名和自己的inode具有一个映射关系。那为什么新创建的目录文件的硬连接数是2呢?比如说下面的图片:

在这里插入图片描述

因为目录里面有两个隐藏文件 .和.. 其中.文件的inode和当前目录的inode是一样的都是1181184
在这里插入图片描述

..文件的inode又和上级目录的inode也是一样的都是1181178

在这里插入图片描述

所以这也是为什么.可以表示当前目录,而cd ..可以回到上级目录的原因。但是用户不能给目录创建软硬链接因为操作系统不相信用户。但是操作系统相信自己所以...就是给目录创建的硬连接。那么这就是本篇文章的全部内容希望大家能够理解。

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

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

相关文章

【谷粒商城之服务认证OAuth2.0】

本笔记内容为尚硅谷谷粒商城服务认证OAuth2.0部分 目录 一、OAuth 2.0 二、微博登录测试 1、微博登陆准备工作 2、获取微博Access Token 3、登录测试 1.添加HttpUtils工具类 2.controller 3.service 4.vo 总结 一、OAuth 2.0 OAuth: OAuth(开…

【账号激活】

由于注册时会遇到诸多错误提示!所以出此详细教程。 重点是要巧妙的运用无痕浏览窗口。 步骤分为两步,sign up 激活邮箱以及 log in 短信验证码验证。 右上角新建无痕浏览窗口。新建完后记得关闭此有痕浏览窗口。 成功创建。完成第一步。 若要连续操作切记…

双极性信号、正交信号和PAM信号通信系统matlab程序+仿真

资源地址: 双极性信号、正交信号和PAM信号通信系统MATLAB程序仿真资源-CSDN文库 部分程序及仿真图: clear all EbN00:10; %SNR的范围 for ii1:length(EbN0) SNREbN0(ii); %赋值给AWGN信道模块中的SNR sim(ex5); %运行仿…

【Java笔试强训 24】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥年终奖 …

一般对称性和轮换对称性

一般对称性 一元函数的对称性 几何意义是所围图形的面积绝对值 【注】使用对称性的时候,首先抓积分区域关于哪个轴对称,其次抓被积函数是为另一轴的奇(偶函数)。 二元函数的对称性(奇偶性) 【注】在一般对称性中,(x…

MCU固件升级系列1(STM32)

本系列将从升级流程、boot代码编写、APP代码编写以及固件打包来介绍,硬件选用STM32F407ZGT6(手里只有),来完成这系列教程。 前言 为什么需要固件升级: 功能更新:随着产品的迭代和用户需求的变化,可能需要…

【DM】达梦数据库与MySQL适配

一、达梦入门技术文档 新手直接看达梦入门技术文档即可 二、达梦数据库 1、介绍 达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM,它具有如下特点:通用性、高性能、高可用、跨平台、高可扩展 2、与…

网络安全:windows批处理写病毒的一些基本命令.

网络安全:windows批处理一些命令. echo off一般都写在批处理的最上面,用于关闭回显,意思是 关闭回显: 没有关闭回显: 所以,意思就是将输入指令的过程隐藏起来。 set是设置的意思,作业是打印、创建和修改变…

【算法】求最短路径算法

文章目录 一、迪杰斯特拉算法1.1 算法介绍1.2 算法步骤1.3 应用场景 二、弗洛伊德算法2.1 算法介绍2.2 算法步骤2.3 应用场景 一、迪杰斯特拉算法 1.1 算法介绍 从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径叫做最短…

Hausdorff distance

Hausdorff距离量度度量空间中紧子集之间的距离 定义 设 X X X和 Y Y Y是度量空间 M M M的两个紧子集 d H ( X , Y ) max ⁡ { sup ⁡ x ∈ X inf ⁡ y ∈ Y d ( x , y ) , sup ⁡ y ∈ Y inf ⁡ x ∈ X d ( x , y ) } d_H\left(X, Y\right) \max \left\{\sup_{x\in X} \in…

Linux — 多线程的互斥与同步,信号量

1.线程互斥 进程线程间的互斥相关背景概念 临界资源:多线程执行流共享的资源就叫做临界资源。临界区:每个线程内部,访问临界资源的代码,就叫做临界区。互斥:任何时刻,互斥保证有且只有一个执行流进入临界区…

利用粒子群算法设计无线传感器网络中的最优安全路由模型(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 无线传感器网络(WSN)由数十个、数百个甚至数千个自主传感器组成。这些传感器以无线方式嵌入环境中&…

Day49 5.01 C++刷题

Go不是解释型语言,是编译型语言 Java是混合型语言

MOSFET正向导通,阻断,阈值电压研究

一 设计要求: N-为均匀掺杂、其他均为离子注入所形成的高斯掺杂;P的宽度为10、结深6um;氧化层oxide厚度为0.1um,宽度为10um;氧化层左侧空白需要定义为材料air;所有电极都定义为无厚度;所有的高斯掺杂峰值点…

( 数组和矩阵) 485. 最大连续 1 的个数 ——【Leetcode每日一题】

❓485. 最大连续 1 的个数 难度:简单 给定一个二进制数组 nums , 计算其中最大连续 1 的个数。 示例 1: 输入:nums [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大…

Vision Transformer架构Pytorch逐行实现

前言 代码来自哔哩哔哩博主deep_thoughts,视频地址,该博主对深度学习框架方面讲的非常详细,推荐大家也去看看原视频,不管是否已经非常熟练,我相信都能有很大收获。论文An Image is Worth 16x16 Words: Transformers f…

iOS审核这些坑,腾讯游戏也踩过

WeTest 导读 在App上架苹果应用商店的过程中,相信大多数iOS开发者往往都有过这样的经历:辛苦开发出来的产品,测试验收也通过了,满怀期待的提交App给苹果审核,结果经常被苹果各种理由拒之门外,苦不堪言。 …

Prometheus监控系统存储容量优化攻略,让你的数据安心保存!

云原生监控领域不可撼动,Prometheus 是不是就没缺点?显然不是。 一个软件如果什么问题都想解决,就会导致什么问题都解决不好。所以Prometheus 也存在不足,广受诟病的问题就是 单机存储不好扩展。 1 真的需要扩展容量吗&#xff…

0x80070570文件或目录损坏且无法读取解决方法

第一种解决方法:命令提示符修复。 1、首先按下“Win标R”键,打开运行。 2、然后如果要修复的文件在E盘,那就输入:chkdsk e: /f,h盘就是:chkdsk h: /f,反正是哪个盘就把中间的字幕改成那个盘的…

ecs思考

VPC网络诊断,从router看起,连接公有子网路有一个默认,再新增一条指向igw路由;连接私有子网路由有一个默认,再新增一条指向NAT网关的路由,其中NAT网关一定要在公有子网中,否则,私有子…