当前位置: 首页 > ai >正文

【Linux】Linux 操作系统 - 22 , 软硬链接详解 !

文章目录

  • 一 、概念介绍
  • 软链接
  • 硬链接
  • 二 、操作 + 理解概念
    • 软链接
      • 1 . 生成软链接的方式
      • 2 . 软链接到底是什么 ?
      • 3 . 软链接有什么用 ?
    • 硬链接
      • 1 . 生成硬链接的方式
      • 2 . 硬链接到底是什么 ?
      • 3 . 硬链接有什么用 ?
      • 4 . 我们用的 . 和 .. 到底是什么 ?
      • 5 . 硬链接数
      • 6 . 硬链接注意事项
  • 三 、综合对比
  • 总结


一 、概念介绍

软链接


官方介绍 : 软链接‌,也称为符号链接(Symbolic Link),是一种特殊的文件类型,它包含了一个指向另一个文件或目录的路径。软链接类似于Windows系统中的快捷方式,它不复制目标文件的内容,而是保存了指向目标文件的路径信息。

硬链接


官方介绍 : 硬链接(hard link,也称链接)就是一个文件的一个或多个文件名。


二 、操作 + 理解概念


  光有以上的概念 , 我们是不容易理解的 , 笔者将在 Ubuntu 环境下做以下操作供我们来理解 !

软链接

1 . 生成软链接的方式

 ln -s src    dst     // 其中 , s 就代表 soft(软)例如 :ln -s code.c code

在这里插入图片描述


2 . 软链接到底是什么 ?


  看以下 :

GJG@hcss-ecs-be05:~/practice/dyn_static_lib/soft_hand_link$  ls -li
total 0
411634 lrwxrwxrwx 1 GJG GJG 6 Jun  6 17:08 code -> code.c
411630 -rw-rw-r-- 1 GJG GJG 0 Jun  6 17:06 code.c
  • i 表示 inode , 即 : 带上 i 选项就会显示文件的 inode 编号 .
  • 软链接后 , 其生成的是新的文件 , 因为其 inode 与 源文件不同 .


  所以 , 软链接的本质是什么呢 ???

答 : 软链接是一个独立的文件 , 因为其 inode number 独立 !


3 . 软链接有什么用 ?


  我们知道了软链接就是一个独立的文件 , 那这个作用在哪呢 ??


这里看一个代码 :

#include <stdio.h>int main()
{	printf("Hello Linux !\n");printf("Hello Linux !\n");printf("Hello Linux !\n");printf("Hello Linux !\n");return 0;
}
  • 代码很简单 , 如果我们要形成可执行程序也很简单 . gcc code.c -o code , 然后在当前目录下运行 ./code 就可以执行了 !

但是 , 如果是以下情况呢 ??

在这里插入图片描述

  如果是这个情况 , 那么路径很深 , 我们每次去运行 code 都要带很长的路径 , 所以此时就可以建立软链接了 !

// ln -s 建立软链接 
GJG@hcss-ecs-be05:~/practice/dyn_static_lib/soft_hand_link$ ln -s ./mycode/mybin/myexe/exe/code  code
GJG@hcss-ecs-be05:~/practice/dyn_static_lib/soft_hand_link$ ls -l
total 12
lrwxrwxrwx 1 GJG  GJG    29 Jun  6 17:40 code -> ./mycode/mybin/myexe/exe/code
-rw-rw-r-- 1 GJG  GJG   159 Jun  6 17:36 code.c
-rw-rw-r-- 1 GJG  GJG    53 Jun  6 17:23 Makefile
drwxr-xr-x 3 root root 4096 Jun  6 17:33 mycode
GJG@hcss-ecs-be05:~/practice/dyn_static_lib/soft_hand_link$ ./code  // 这样就不用带全路径了 , 软链接code 会找到其指向的路径的可执行程序 !
Hello Linux !
Hello Linux !
Hello Linux !
Hello Linux !

所以 , 软链接就是类似 Winodows 下的快捷方式 , 为程序员提供便利性 !


硬链接

1 . 生成硬链接的方式

ln src     dst   // dst 就是生成的硬链接ln code.c code_hard

在这里插入图片描述


2 . 硬链接到底是什么 ?

在这里插入图片描述

所以 , 硬链接的本质是 : 不是一个独立的文件 , 是一个新的文件和 目标 inode number 的映射关系 !

  什么意思呢 ?? 就是硬链接是一个新的文件指向 inode 这个文件(你要建立硬链接的文件) .


3 . 硬链接有什么用 ?


对文件进行备份 !

  往后我们对文件进行备份就可以用硬链接的方式进行了 !!


4 . 我们用的 . 和 … 到底是什么 ?


  在 Linux 中我们经常会用到 . 和 … 这样的符号来和 cd 命令配合使用 , 之前的文章笔者讲过 , . 和 … 的区别 : . 是表示的当前目录 , … 表示的是上级目录 . 那为什么呢 ???

我们进行验证 :

// 分别执行以下命令 :
mkdir test 
tree test
ls -ild test/
cd test/
ls -ail
ls -adil ..

在这里插入图片描述

  所以 , . 和 … 就是对当前目录和上级目录的备份 !!!

所以 , . 和 .. 的本质就是 : 硬链接 !!!!


5 . 硬链接数

在这里插入图片描述


什么是硬链接数呢 ?? 其实就是指 : 有多少个文件指向该文件 , 底层就是引用计数 !

  • test.c 硬链接数为 1 , 因为其只有自己 , 所以硬链接数是 1 .
  • code_hard 为 code.c 的硬链接 , 而硬链接的本质就是增加映射关系 , 所以 , 硬链接数为 2 .


那对于目录来说呢 ??

在这里插入图片描述

  • test 目录为空 , 但是其硬链接数为 2 , 为什么 ???

因为 , test 中会有 . 和 .. 目录的存在 , 其中 , . 是表示的当前目录 , 即 : 所以 , . 会指向当前目录 , 当前目录就会有自己和 . 同时指向 , 故 : 最终硬链接数就是 2 !


6 . 硬链接注意事项

  • 注意 : 硬链接只能对普通文件进行硬链接 , 目录不可 !!!

在这里插入图片描述


三 、综合对比

在这里插入图片描述

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

http://www.xdnf.cn/news/13440.html

相关文章:

  • 104.解决在流式回答功能实现之后上传附件功能失效bug之前端处理
  • DAY 28 类的定义和方法
  • 三代社保卡全字段识别-社保卡识别软件-社保卡识别接口集成
  • 结合redis实现文件分片秒传断点续传
  • Linuxkernel学习-deepseek-2
  • Java-43 深入浅出 Nginx - 基本配置方式 nginx.conf Events块 HTTP块 反向代理 负载均衡
  • idea不同颜色总结
  • 【深尚想】LTR-390UV-01光宝环境光传感器电子元器件详细解析
  • HDFS 中 DataNode 挂载外部 S3 存储系统作为本地卷
  • 迁移科技3D视觉系统:开启袋子拆垛场景的智能革命新纪元
  • 53、错误处理-【源码分析】底层组件功能分析
  • Kafka消费者组位移重设指南
  • 从0到1掌握Sqoop:开启大数据迁移之旅
  • 爬取新浪新闻网的全部策略
  • 【kafka】rebalance机制详解
  • 基于GNU Radio Companion安装和搭建的简易FMRadio
  • Node.js版本管理
  • Contos7yum停服
  • latch/ff的电路结构及setup/hold/tpd、clkWidht/recovery/remove
  • Dexcap复现代码运行逻辑全流程(二)——realsense T265测试使用
  • 【学习笔记】RTSP-Ovnif-GB28181
  • vtk 对stl文件进行降采样
  • 鹰盾播放器AI识别字幕技术栈解析:从视频帧处理到语义理解的全流程实现
  • 工作总结及记录
  • vim的相关命令 + 三种模式(10)
  • Java异步编程难题
  • 保险丝的作用、基本参数和选型
  • vite原理
  • 智慧航空 | 飞机引擎设备拆解可视化
  • pysnmp模块中 GET、SET、WALK操作详细分步解析