ln 的作用是制作一个文件或者目录的快捷方式,让我们在使用的过程当中更加方便地使用。
下面我来简单介绍一下 ln 的基本用法。
ln 的基本语法
生成一个软链
ln -s source_name link_name
生成一个硬链
ln source_name link_name
其中 source_name
表示源文件或者源目录的名称, link_name
表示链接文件的名字
我们来说一下, 软链和硬链是什么东西。
首先,不管是软链还是硬链,我们对他们的操作(比如修改文件内容)都会同步到其对应的源文件,同样对源文件的操作同样会同步到链接之上。
那么软件和硬链有什么不同呢?
我们新那建一个文件,名为 source.txt, 写如以下内容,保存
然后分别制作一个关联到 source.txt 的软链和硬链, 查看当前目录的情况
[x@1lin24 tmp]$ ln -s source.txt s_link.txt
[x@1lin24 tmp]$ ln source.txt h_link.txt
[x@1lin24 tmp]$ ls -la
total 16
drwxrwxr-x 2 x x 4096 Oct 21 14:43 .
drwx------ 7 x x 4096 Oct 21 14:43 ..
-rw-rw-r-- 2 x x 110 Oct 21 14:42 h_link.txt
lrwxrwxrwx 1 x x 10 Oct 21 14:39 s_link.txt -> source.txt
-rw-rw-r-- 2 x x 110 Oct 21 14:42 source.txt
我们发现如下信息:
- 软链文件类型是
l
, 而硬链的软件类型却是普通文件 - 软链的文件大小很小,而硬链的文件大小与源文件一样
- 软链的最后,说明了源文件的位置,而且硬链没有
那么,如果源文件不小心被删除了,会发生什么事情呢
软链的源文件位置变成红底的白色文字,而且文字不停地闪烁,而硬链看起来没什么变化。
让我们用vim分别打开他们,看会发生什么事情。vim h_link.txt
硬链文件似乎没有受到什么影响
vim s_link.txt
我们看到以下内容
我们发现,似乎是让我们新建一个新的文件,我们在里面输入 new file
, 保存
[x@1lin24 tmp]$ ls -la
total 16
drwxrwxr-x 2 x x 4096 Oct 21 14:57 .
drwx------ 7 x x 4096 Oct 21 14:57 ..
-rw-rw-r-- 1 x x 110 Oct 21 14:42 h_link.txt
lrwxrwxrwx 1 x x 10 Oct 21 14:39 s_link.txt -> source.txt
-rw-rw-r-- 1 x x 24 Oct 21 14:57 source.txt
神奇的事情发生了, source.txt 回来了!说明当我们编辑丢失源文件的软链时,系统会引导我们创建一个新的源文件。
此时,我们再查看 h_link_txt 发现,它的内容仍然还是删除源文件前的样子。
从上面的小实验,我们可以知道,删除源文件之后,编辑软链会引导我们创建新的源文件,并且保持原先的关系。
在同样的情况下,删除源文件硬链并不会丢失内容,而且只是切断了他们的同步关系,硬链仍然是一个独立、完整的文件。
如果我们手动把再新建一个 source.txt 会发生什么事情呢?
我们先删除源文件,然后手动创建一个 source.txt
[x@1lin24 tmp]$ rm source.txt
[x@1lin24 tmp]$ ls -la
total 12
drwxrwxr-x 2 x x 4096 Oct 21 15:04 .
drwx------ 7 x x 4096 Oct 21 14:57 ..
-rw-rw-r-- 1 x x 110 Oct 21 14:42 h_link.txt
lrwxrwxrwx 1 x x 10 Oct 21 14:39 s_link.txt -> source.txt
[x@1lin24 tmp]$ vim source.txt
source.txt的内容如下图:
保存之后
[x@1lin24 tmp]$ ls -la
total 16
drwxrwxr-x 2 x x 4096 Oct 21 15:07 .
drwx------ 7 x x 4096 Oct 21 15:07 ..
-rw-rw-r-- 1 x x 110 Oct 21 14:42 h_link.txt
lrwxrwxrwx 1 x x 10 Oct 21 14:39 s_link.txt -> source.txt
-rw-rw-r-- 1 x x 15 Oct 21 15:05 source.txt
我们再打开 s_link.txt, 其内容如下图:
软链同样自动作关关联。而打开硬链的话,其内容依然没有变化,此时它已经和 source.txt 没有关系了。
需要注意的点
- 软链只能链接到文件不能链接到目录(详见《ln命令_Linux ln命令:创建文件链接》)
- 如果软链对应的文件被删除的话,重新 编辑 软件,会新建一个新的文件
- 链接可以建立在链接之上
- 链接最好是建议在绝对路径之上