【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提供了大量能使我们快速便捷地处理数据的函数和方法。