Linux 建立链接 ln

ln命令用于为文件创建链接。

Linux链接包括两种:软链接与硬链接。


1 软链接

Linux软链接与Windows的快捷方式相同:

当文件所在文件夹深度较深时,可以在桌面等位置创建一个软链接,方便操作。

软链接本身是一个新的文件,其中存储的原始文件的路径。

软链接可针对文件与文件夹进行创建。

img

在浏览器中查看,软链接图标的左下角有下箭头。


/bin是/usr/bin/的软链接;/lib是/usr/lib/的软链接。


2 硬链接

Windows中没有硬链接这个概念。


硬链接的基本理解:“文件名称备份”。

1)针对文件每次创建一个硬链接,相当于这份文件多出一个文件名,文件数据不会复制;

2)多个硬链接对应的是同一份文件数据;

3)当原始文件与所有硬链接被删除时,文件才会被删除。


用户能为文件创建硬链接,而无法为文件夹创建硬链接。


3 语法

ln [选项] 源文件 链接

4 常用选项

选项 作用
-s 创建软链接。默认为硬链接。

5 软链接示例

例1:为文件 /xiaobu1/sub2/sub3/file1.txt 创建软链接 /file1.txt

准备数据

mkdir -p /xiaobu1/sub2/sub3/
echo xiaobuteach.com > /xiaobu1/sub2/sub3/file1.txt

创建软链接

ln -s /xiaobu1/sub2/sub3/file1.txt /file1.txt

测试

cat /file1.txt

正确显示源文件内容。

img

查看文件的inode编号与链接数:

img

img

源文件的软链接的Inode不同,Links分别为1。说明两者本质是两个不同的文件。


例2:为文件夹 /xiaobu1/sub2/sub3 创建软链接 /sub3

ln -s /xiaobu1/sub2/sub3 /sub3

测试。 通过软链接进行ls操作

ls /sub3

img


6 硬链接示例

例1:为文件 /xiaobu1/sub2/sub3/file2.txt 创建硬链接 /file2.txt

准备数据

rm -rf /xiaobu1/sub2/sub3/file2.txt
echo www.xiaobuteach.com > /xiaobu1/sub2/sub3/file2.txt

创建硬链接

ln /xiaobu1/sub2/sub3/file2.txt /file2.txt

测试

cat /file2.txt

正确显示源文件内容。

img


查看两个文件的Inode编号与链接数。

img

两个文件的Inode编号相同,说明两者是同一个文件。

一个Inode文件增加一个硬链接,则链接数Links加1 。


7 应用

软件链接的常见应用:

1)建立快捷方式:用更简单的路径访问文件。

2)切换版本:例如python版本管理,重建链接指向不同的python版本,达到切换版本目的。


硬链接的常见应用:

1)多用户权限:针对不同用户建立不同的访问权限

2)文件"备份":建立一个硬链接,相当于建立一个"备份",删除原始文件名,文件仍不会删除。