介绍
在本实验中,你将学习 Linux 的 ln
命令及其在创建硬链接和符号链接中的实际应用。实验内容涵盖了 ln
命令的用途、如何创建硬链接以及如何创建符号链接。你将了解这两种链接类型之间的区别及其使用场景。实验提供了逐步的指导和示例,帮助你掌握 ln
命令及其在 Linux 中的文件和目录管理功能。
在本实验中,你将学习 Linux 的 ln
命令及其在创建硬链接和符号链接中的实际应用。实验内容涵盖了 ln
命令的用途、如何创建硬链接以及如何创建符号链接。你将了解这两种链接类型之间的区别及其使用场景。实验提供了逐步的指导和示例,帮助你掌握 ln
命令及其在 Linux 中的文件和目录管理功能。
ln
命令的用途在这一步骤中,你将学习 Linux 中 ln
命令的用途。ln
命令用于创建链接,这些链接是指向其他文件或目录的特殊文件。链接分为两种类型:硬链接(hard links)和符号链接(symbolic/soft links)。
硬链接是通过 ln
命令不加任何额外选项创建的。硬链接本质上是原始文件的副本,但它们共享相同的 inode(文件元数据)和物理存储位置。这意味着对文件内容的更改会反映在所有硬链接中。
要创建硬链接,请运行以下命令:
ln original_file hard_link_name
示例输出:
$ ln file1.txt file1_hardlink.txt
符号链接(也称为软链接)是通过 ln
命令的 -s
选项创建的。符号链接是指向原始文件或目录的指针,它们包含目标路径。与硬链接不同,符号链接可以跨越文件系统边界指向文件或目录。
要创建符号链接,请运行以下命令:
ln -s original_file symbolic_link_name
示例输出:
$ ln -s file1.txt file1_symlink.txt
硬链接和符号链接的主要区别在于,硬链接与原始文件紧密耦合,而符号链接更加灵活,可以跨越文件系统指向文件或目录。
ln
命令创建硬链接在这一步骤中,你将学习如何使用 ln
命令创建硬链接。
首先,我们创建一个示例文件,用于创建硬链接:
touch file1.txt
echo "This is the original file." > file1.txt
现在,我们使用 ln
命令为 file1.txt
创建一个硬链接:
ln file1.txt file1_hardlink.txt
不加任何选项的 ln
命令会创建一个硬链接。这意味着 file1_hardlink.txt
和 file1.txt
现在共享相同的 inode(文件元数据)和物理存储位置。对其中一个文件的更改会反映在另一个文件中。
让我们验证硬链接是否创建成功:
ls -l file1.txt file1_hardlink.txt
示例输出:
-rw-r--r-- 2 labex labex 25 Apr 12 12:34 file1.txt
-rw-r--r-- 2 labex labex 25 Apr 12 12:34 file1_hardlink.txt
注意,两个文件具有相同的 inode 号(第二列中的“2”),这表明它们是同一文件的硬链接。
现在,我们对原始文件进行更改,看看硬链接会如何变化:
echo "This is an updated file." > file1.txt
cat file1.txt file1_hardlink.txt
示例输出:
This is an updated file.
This is an updated file.
如你所见,对 file1.txt
的更改会反映在硬链接 file1_hardlink.txt
中。
硬链接在你希望创建对同一文件的多个引用时非常有用,且不会占用额外的存储空间。但请注意,硬链接不能跨越文件系统边界,也不能为目录创建硬链接。
ln
命令创建符号链接在这一步骤中,你将学习如何使用 ln
命令创建符号链接(软链接)。
首先,我们创建另一个示例文件,用于创建符号链接:
touch file2.txt
echo "This is the second file." > file2.txt
现在,我们使用 ln
命令的 -s
选项为 file2.txt
创建一个符号链接:
ln -s file2.txt file2_symlink.txt
-s
选项告诉 ln
命令创建一个符号链接,而不是硬链接。
让我们验证符号链接是否创建成功:
ls -l file2.txt file2_symlink.txt
示例输出:
-rw-r--r-- 1 labex labex 23 Apr 12 12:34 file2.txt
lrwxrwxrwx 1 labex labex 8 Apr 12 12:34 file2_symlink.txt -> file2.txt
注意,符号链接 file2_symlink.txt
的权限开头有一个“l”,表明它是一个符号链接。输出还显示 file2_symlink.txt
指向 file2.txt
。
与硬链接不同,符号链接可以跨越文件系统边界指向文件或目录。我们通过创建一个指向目录的符号链接来演示这一点:
mkdir dir1
ln -s dir1 dir1_symlink
ls -l dir1 dir1_symlink
示例输出:
drwxr-xr-x 2 labex labex 4096 Apr 12 12:34 dir1
lrwxrwxrwx 1 labex labex 5 Apr 12 12:34 dir1_symlink -> dir1
如你所见,dir1_symlink
是一个指向 dir1
目录的符号链接。
符号链接比硬链接更灵活,因为它们可以跨越文件系统边界指向文件或目录。然而,它们也可能更脆弱,因为如果目标文件或目录被移动或删除,链接将会失效。
在本实验中,你学习了 Linux 中 ln
命令的用途,该命令用于创建指向其他文件或目录的链接。你探索了两种类型的链接:硬链接和符号链接(软链接)。硬链接本质上是原始文件的副本,它们共享相同的 inode 和物理存储位置,而符号链接是指向原始文件或目录的指针,并且可以跨越文件系统边界。你还学习了如何使用 ln
命令创建硬链接和符号链接。