Linux ln ( link ) 命令用于创建文件或目录的符号链接和硬链接。

ln 命令的定义解释

在 Linux 和 FreeBSD 系统中有两种类型的链接:

硬链接:您可以将硬链接视为现有文件的附加名称。硬链接是指链接两个或多个具有相同 inode 的文件名。只能为位于同一文件系统或分区上的目录和文件创建硬链接,一个文件可以有一个或多个硬链接。硬链接以文件副本的形式存在,当删除原文件时,文件不会被删除,当删除最后一个硬链接时,才删除文件。

软链接:也称符号链接,是一种文件类型,它为对文件系统中另一个文件或目录的引用。它类似于 Windows 操作系统中的快捷方式,因为它允许您从不同位置访问文件或目录,而无需创建副本。符号链接对于组织文件很有用,也能更容易地访问经常使用的文件或目录。与硬链接不同,符号链接可以指向不同分区或文件系统上的文件或目录。

ln ( link ) 命令用于创建文件或目录的符号链接和硬链接,符号链接也称为软链接,是一种特殊类型的文件,它指向另一个文件或目录。符号链接通常用于为文件系统中的文件或目录创建快捷方式或别名。

在本教程中,我们将介绍如何使用 ln 命令创建符号链接和硬链接。

ln 命令语法

ln 命令的基本语法形式有如下几种:

ln [OPTION]... [-T] TARGET LINK_NAME
ln [OPTION]... TARGET
ln [OPTION]... TARGET... DIRECTORY
ln [OPTION]... -t DIRECTORY TARGET...

各种语法形式的详细解释:

  • ln [OPTION]... [-T] TARGET LINK_NAME 语法形式为:为对象文件 TARGET 创建一个名称或路径为 LINK_NAME 的链接。
  • ln [OPTION]... TARGET 语法形式为:为对象文件 TARGET 创建一个在当前目录中的名称相同的链接,TARGET 不能是当前目录中的文件
  • ln [OPTION]... TARGET... DIRECTORY 语法形式为:为多个对象文件 TARGET...DIRECTORY 目录中创建与对象文件 TARGET 名称相同的链接,可以使用 . 指定目录为当前目录。
  • ln [OPTION]... -t DIRECTORY TARGET... 语法形式与第三种语法形式相同,只是使用 -t 选项提前了 DIRECTORY 的位置。

默认情况解释说明:

  • 默认情况下 ln 命令创建的链接为硬链接(hard link)。
  • 默认情况下是不能已经存在指定名称的目标文件(链接文件)的。

ln 命令使用示例

创建文件的符号链接

使用 -s 选项,为对象文件 file1.txt 创建一个名为 link1.txt 的符号连接:

ln -s file1.txt link1.txt

查看符号链接的具体内容:

ls -l link1.txt
# 输出:
lrwxrwxrwx 1 anxin anxin 9  6月26日 12:46 link1.txt -> file1.txt
|
|
+------------------------------------------ 字符 l 表示文件类型为符号链接

创建目录的符号链接

使用 -d 选项指定创建的是一个目录,同时使用 -s 选项,为对象文件 /var/www/dir1 创建一个名为 ~/dir2 的符号连接:

ln -s -d /var/www/dir1 ~/dir2

由于系统限制,很多系统上无法为目录创建符号链接(看似创建了符号链接,也无法打开)。

覆盖符号链接

默认情况下,当指定的符号链接在目录中已经存在时,无法创建符号链接:

ln -s file2.txt link1.txt

当符号链接 link1.txt 已经存在的情况下会输出以下信息:

ln: 无法创建符号链接 'link1.txt': 文件已存在

使用 -f 选项,强制覆盖已有的符号链接:

ln -sf file2.txt link1.txt

创建文件硬链接

不使用任何选项,为对象文件 file1.txt 创建一个名为 link1.txt 的链接,该链接为硬链接:

ln file1.txt link1.txt

查看符号链接的具体内容:

ls -l link1.txt
# 输出:
-rw-r--r-- 2 anxin anxin 0  6月26日 12:45 link1.txt

从输出可以看出,link1.txt 就是一个文件,只不过该文件是一个副本,不占用空间,使用 inode 方式和源文件链接在一起。

删除符号链接

删除使用 ln 命令创建的符号链接有两种方式:使用 unlink 命令删除,或使用 rm 命令删除。

1、unlink 命令是专门用来删除符号链接的,使用 unlink 删除 link1.txt 符号链接:

unlink link1.txt

2、rm 命令是用来删除文件的,符号链接也是一种文件,使用 rm 删除 link1.txt 符号链接:

rm link1.txt

ln 命令选项解释

如下给出了 Linux ln 命令中所有选项的解释说明:

选项 解释说明
--backup[=CONTROL] 对每个现有的目标文件(链接文件)进行备份
-b 类似于 --backup,但不接受参数
-d, -F, --directory 允许超级用户尝试为目录创建硬链接(注意:由于系统限制,即使是超级用户也可能失败)
-f, --force 删除现有目标文件(链接文件)后创建链接
-i, --interactive 交互式提示是否删除目标文件(链接文件)
-L, --logical 取消对对象(TARGET)为符号链接的引用
-n, --no-dereference 如果 LINK_NAME 是指向目录的符号链接,则将其视为普通文件
-P, --physical 直接为符号链接创建硬链接
-r, --relative 使用 -s,创建相对于链接位置的链接
-s, --symbolic 创建符号链接,而不是硬链接
-S, --suffix=SUFFIX 覆盖通常的备份后缀
-t, --target-directory=DIRECTORY 指定在目录 DIRECTORY 中创建链接
-T, --no-target-directory 始终将 LINK_NAME 视为普通文件
-v, --verbose 输出每个链接文件的名称
--help 显示帮助信息后退出
-v, --version 显示版本信息后退出

结语

在本教程中我们介绍了如何使用 ln ( link ) 命令创建文件或目录的符号链接和硬链接,符号链接也称为软链接,是一种特殊类型的文件,它指向另一个文件或目录。符号链接通常用于为文件系统中的文件或目录创建快捷方式或别名。

该 ln 命令可以在 Linux 系统中使用,也可以在 FreeBSD 系统中使用。