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


一 、概念介绍

软链接


官方介绍 : 软链接‌,也称为符号链接(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提供了大量能使我们快速便捷地处理数据的函数和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值