在 Linux / Unix 系统中,链接文件提供了一种方便的方式来访问已存在的文件,或者共享一个文件给多个用户。Linux 命令 ln 可以创建两种类型的链接文件:硬链接和符号链接。本文将全面详细讲解 Linux 命令 ln 的使用方法,并且提供多个实例。
ln 命令可以在 Linux 中创建链接文件。链接文件就像是一个别名,它们指向另外一个文件或目录,并且有自己的名称和位置。链接文件分为两类:硬链接和符号链接。
硬链接与原始文件指向相同的数据块,在同一文件系统中,硬链接与原始文件共享 inode(索引节点),可以看作是对同一个文件的两种访问方式。硬链接不能被建立到目录上,而且不能跨越物理设备或文件系统。
符号链接(也被称为软链接)是一个特殊的类型的文件,包含另一个文件的路径名。符号链接文件拥有自己的 inode,并且在不同文件系统和物理设备之间移动一个目标的位置时,符号链接可用于跨越文件系统进行操作。符号链接的目标可以是目录和文件,但是当它指向的是一个目录时,要注意一些问题,因为符号链接会创建一个新的文件名,并不是原来的目录。
ln 命令语法如下所示:
ln [OPTION]... [-T] TARGET LINK_NAME
ln [OPTION]... TARGET... DIRECTORY
ln [OPTION]... TARGET... LINK_DIRECTORY
其中,TARGET 是被链接文件的路径名或多个路径名。LINK_NAME 是新链接文件的名称,可选参数。DIRECTORY 是需要将 TARGET 文件链接到其中的目录。
常用参数解释:
为了更好地理解 ln 命令的使用方法,下面给出一些实例来说明 ln 命令的具体应用。首先,我们需要准备一些文件,以便后面的实例可以参考它们。
这个实例演示如何使用 ln 命令创建硬链接,并且当删除原始文件时硬链接仍然能够访问目标文件。
首先,我们创建一个名为 testfile.txt
的文件:
$ echo "This is a test file." > testfile.txt
$ cat testfile.txt
This is a test file.
然后,我们使用 ln 命令创建一个硬链接。
$ ln testfile.txt hard_link
在上面的例子中,我们创建了一个名为 hard_link
的硬链接。注意,在创建硬链接时我们不需要指定 -s
选项。
接着,我们删除原始文件 testfile.txt
,然后查看硬链接的内容:
$ rm testfile.txt
$ cat hard_link
This is a test file.
可以看到,当我们删除原始文件之后,硬链接仍然可以访问指向的文件内容。
这个实例演示如何使用 ln 命令创建符号链接。
首先,我们创建一个名为 testfile.txt
的文件:
$ echo "This is a test file." > testfile.txt
$ cat testfile.txt
This is a test file.
接着,我们使用 ln 命令创建一个符号链接。
$ ln -s testfile.txt symbolic_link
在上面的例子中,我们创建了一个名为 symbolic_link
的符号链接文件。注意,在创建符号链接时需要使用 -s
选项。
接下来,我们将删除原始文件 testfile.txt
,然后查看符号链接的内容:
$ rm testfile.txt
$ cat symbolic_link
cat: symbolic_link: No such file or directory
可以看到,当我们删除原始文件之后,符号链接不能够访问指向的文件内容。
这个实例演示了如果使用 ln 命令覆盖现有文件。
首先,我们创建两个文件:
$ echo "This is file 1." > file1.txt
$ echo "This is file 2." > file2.txt
$ cat file1.txt
This is file 1.
$ cat file2.txt
This is file 2.
接下来,我们使用 ln 命令将 file2.txt
重命名为 file1.txt
,以覆盖原始的 file1.txt
:
$ ln -f file2.txt file1.txt
在上面的例子中,-f
选项表示强制执行,覆盖现有文件。这样,现在 file1.txt
的内容变为了 This is file 2.
,因为它被链接到 file2.txt
。
这个实例演示如何在目录中使用 ln 命令创建链接文件。
首先,我们创建一个目录 test_dir
:
$ mkdir test_dir
然后,我们创建一个文件 testfile.txt
:
$ echo "This is a test file." > testfile.txt
$ cat testfile.txt
This is a test file.
现在,我们使用 ln 命令将文件 testfile.txt
链接到目录 test_dir
:
$ ln testfile.txt ./test_dir
在上面的例子中,我们使用相对路径 ./test_dir
指定了链接文件的位置。
接下来,我们进入目录 test_dir
,查看是否可以访问链接文件:
$ cd test_dir/
$ cat ../testfile.txt
This is a test file.
可以看到,我们可以在目录 test_dir
中访问链接文件 testfile.txt
。
这个实例演示如何使用 ln 命令链接多个文件。
首先,我们创建两个文件:
$ echo "This is file 1." > file1.txt
$ echo "This is file 2." > file2.txt
$ cat file1.txt
This is file 1.
$ cat file2.txt
This is file 2.
然后,我们使用 ln 命令将多个文件链接到一个目录:
$ mkdir test_dir
$ ln file1.txt file2.txt test_dir/
在上面的例子中,我们使用 ln 命令将两个文件 file1.txt
和 file2.txt
链接到目录 test_dir
。
接下来,我们进入目录 test_dir
,查看是否可以访问链接文件:
$ cd test_dir/
$ ls
file1.txt file2.txt
$ cat file1.txt
This is file 1.
$ cat file2.txt
This is file 2.
可以看到,我们成功地将两个文件链接到了目录 test_dir
。