Linux ln 命令 | 创建文件或目录的符号链接或硬链接
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 系统中使用。