概述
ln
命令可以为某个文件或目录在另外一个位置建立软链接,也称为符号链接。类似于 Windows 系统里的快捷方式。ln
是 link
的缩写。
除了有软链接(symbolic link),还有硬链接(hard link)。软链接可以看成是 Windows 系统中的快捷方式,可以让你快速链接到目标文件或目录,它找到的是原文件名,通过原文件名找到真实的文件或目录,但软链接本身有自己的 indoe
。硬链接是透过文件系统的 indoe
产生新的文件名,而不是产生新的文件,即是一个文件使用了多个别名,这个别名与源文件名都指向源文件的 inode
。
软链接与硬链接的区别:
- 软链接
- 软链接以路径的形式存在,类似于Windows系统中的快捷方式。
- 软链接可以跨文件系统,硬链接不可以。
- 软链接可以对一个不存在的文件名进行链接。
- 软链接可以对目录进行链接。
ln -s
命令创建软链接。- 软链接的
inode
与源文件的不同。 - 删除软链接和硬链接文件,对源文件本身没有任何影响。
- 删除源文件,软链接失效。
- 可以用
ll
命令查看软链接文件末尾位置是否指向另外一个文件来确定它是否是软链接。
- 硬链接
- 硬链接,以文件副本的形式存在,实际上不占用空间。
- 不允许给目录创建硬链接,只能给文件。
- 硬链接只能在同一个文件系统中才能创建。
ln
命令创建硬链接。- 硬链接的
inode
与源文件的相同。 - 删除源文件,硬链接没有影响。但删除源文件和硬链接,整个文件就会被真正删除。
- 硬链接是源文件的一个别名,硬链接与源文件本质上是同一个文件,所以修改源文件或硬链接文件,相互都会变化。
- 可以用
ls -i
命令查看源文件的inode
和硬链接文件的inode
判断是否是同一个文件。
语法
该命令的语法如下:
ln [参数] [源文件或目录] [目标文件或目录]
该命令支持的选项有:
选项 | 说明 |
---|---|
-b | 为每个已存在的目标文件创建备份文件 |
-d | 允许 root 用户建立目录的硬链接 |
-f | 强制创建链接,即使目标文件已经存在 |
-n | 把指向目录的符号链接视为一个普通文件 |
-i | 交互模式,若目标文件已经存在,则提示用户确认进行覆盖 |
-s | 对源文件建立符号链接,而非硬链接 |
-v | 详细信息模式,输出指令的详细执行过程 |
注:除了
-s
选项之外,其他选项一般用不上,所以只需要知道如何创建硬链接和软链接即可。
使用
创建硬链接【★★★★★】
给文件创建硬链接的语法如下,创建硬链接成功后,可以用 ls -i
命令查看硬链接文件和源文件的 inode
确定它们是否是同一个文件:
# 语法
ln 源文件 硬链接文件
# 示例
ln /home/lighthouse/test.txt test.hard.link
创建软链接【★★★★★】
如果要创建软链接,则必须加上 -s
选项。语法如下:
# 语法
ln -s 源文件或目录 目标软链接文件
# 示例
ln -s /home/lighthouse/test.txt test.link
ln -s /home/lighthouse/test test