Ubuntu中的两种link的区别

Posted Rick Qin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu中的两种link的区别相关的知识,希望对你有一定的参考价值。

Ubuntu中有两种link(windows世界中文件的“快捷方式”),一个是hard link(硬链接),另一个是symbolic link(软链接)。

那么,什么是硬链接,什么又是软链接呢?

硬链接(hard link)

简单的说,硬链接会链接到目标文件的内容,即便目标文件在链接之后被改了名字,又或者被删掉了,硬链接以及硬链接的目标内容依然存在且有效。我们来做个实验。

实验过程设计:

1、创建一个文本文件origin;

2、向origin文件中写入内容"lorem ipsum”;

3、建立一个硬链接origin_hard到origin文件;

4、显示origin_hard内容;

5、删除origin文件;

6、再次显示origin_hard内容。

结果判定:

如果在删除origin文件[1]之后origin_hard仍然可以显示“lorem ipsum”,即可判断硬链接是链接到文件内容的链接。

实验过程:

n@ubt:~$ touch origin
n@ubt:~$ echo "lorem ipsum" >> origin
n@ubt:~$ cat origin
lorem ipsum
n@ubt:~$ ln origin origin_hard
n@ubt:~$ ls -l | grep origin
-rw-rw-r-- 2 n n   12 9月   5 23:05 origin
-rw-rw-r-- 2 n n   12 9月   5 23:05 origin_hard
n@ubt:~$ cat origin_hard
lorem ipsum
n@ubt:~$ rm origin
n@ubt:~$ ls -l | grep origin
-rw-rw-r-- 1 n n   12 9月   5 23:05 origin_hard
n@ubt:~$ cat origin_hard
lorem ipsum
n@ubt:~$ 

结论:

硬链接(hard link)是一种特殊的文件,链接到内容,而非另一个文件的路径或地址(有别于软链接symbolic link)。

让我们再来看看软链接(symbolic link)

软链接(symbolic link)

软链接是指向目标文件所在路径的一种链接,也就是说,如果目标文件(以及文件内容)不存在了,指向这一文件地址的软链接将会指向一个不存在的文件地址,从而产生访问错误。与硬链接一样,我们同样通过一个实验来验证软链接的特性。

实验过程设计:

1、创建一个文本文件origin;

2、向origin文件中写入“lorem ipsum”;

3、建立一个软链接origin_soft,指向origin文件;

4、尝试通过origin_soft显示origin中的文本内容,用以验证软链接创建成功;

5、删除origin文件;

6、尝试再次通过origin_soft显示其内容。

结果判定:

如果在删除origin文件后,通过origin_soft不再可以显示“lorem ipsum”内容,即可说明软链接(symbolic link)仅是指向目标文件地址的链接,而非文件内容。

实验过程:

n@nbt:~$ touch origin
n@nbt:~$ echo "lorem ipsum" >> origin
n@nbt:~$ ln -s origin origin_soft
n@nbt:~$ cat origin_soft 
lorem ipsum
n@nbt:~$ rm origin
n@nbt:~$ cat origin_soft
cat: origin_soft: No such file or directory
n@nbt:~$ 

结论:

软链接(symbolic link)是指向目标文件地址的链接。当目标文件不存在时,软链接也会失去其链接目标。

附录

[1]文件——在Unix/Linux的世界中,文件(file)并非我们在windows操作系统中理解的那样。Unix/Linux的文件是指一个(块)数据,该数据没有文件名,仅有一个ID号(inode)。如果可以理解这个概念,那么再回过头来看硬链接(hard link),你就会发现创建一个硬链接的过程其实是在给同一个数据创建别名(一个新的文件名)。就拿上面我们的实验举例,“lorem ipsum”数据有一个文件名origin,之后我们又给了这个数据另一个文件名origin_hard。通过origin和origin_hard都可以访问到数据“lorem ipsum”,见图-1。

 

图-1

在硬链接实验环节我们删除的origin文件,确切的说,并非将lorem ipsum数据删掉了,而仅仅是删除了origin文件(指向Lorem ipsum数据的名称文件)。所以,数据并没有被删除,我们通过origin_hard文件依然可以访问到Lorem ipsum数据。然而,软链接并非如此,见图-2。

图-2

图-2中,软链接origin_soft文件指向origin文件。一旦origin文件被删除,则Lorem ipsum数据将丢失所有指向其的有效引用。由于删除origin文件后,origin_soft丢失了引用目标,导致系统无法通过origin_soft访问Lorem ipsum数据。

 

以上是关于Ubuntu中的两种link的区别的主要内容,如果未能解决你的问题,请参考以下文章

VUE的两种跳转push和replace对比区别

jsp中的两种跳转方式分别是?有什么区别?

jsp中的两种跳转方式分别是?有什么区别?

DialogFragment——解决PopupWindow中的输入框无法复制粘贴的问题;Android中的两种弹窗PopupWindow和Dialog的区别。

DialogFragment——解决PopupWindow中的输入框无法复制粘贴的问题;Android中的两种弹窗PopupWindow和Dialog的区别。

<link>和@import url()引入外部css文件的区别