Linux ln 命令及实际示例

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习 Linux 的 ln 命令及其在创建硬链接和符号链接中的实际应用。实验内容涵盖了 ln 命令的用途、如何创建硬链接以及如何创建符号链接。你将了解这两种链接类型之间的区别及其使用场景。实验提供了逐步的指导和示例,帮助你掌握 ln 命令及其在 Linux 中的文件和目录管理功能。

Linux 命令速查表


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/rm("File Removing") linux/BasicFileOperationsGroup -.-> linux/ln("Link Creating") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") subgraph Lab Skills linux/ls -.-> lab-422760{{"Linux ln 命令及实际示例"}} linux/rm -.-> lab-422760{{"Linux ln 命令及实际示例"}} linux/ln -.-> lab-422760{{"Linux ln 命令及实际示例"}} linux/cat -.-> lab-422760{{"Linux ln 命令及实际示例"}} end

理解 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.txtfile1.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 命令创建硬链接和符号链接。

Linux 命令速查表