Linux 中的 ln 命令:创建软链接和硬链接

链接是对另一个文件的引用。 链接为同一个文件提供多个名称,并允许它们同时存在于两个或多个位置。

有两种类型的链接:

  • 软链接或符号链接:这只是原始文件的快捷方式。
  • 硬链接:这指向原始文件的内存位置。

这张图片显示了这两种类型的链接是如何工作的:

硬链接和软链接都是用 ln 命令创建的。

在本教程中,我将向您展示如何使用 ln 命令在 Linux 中创建各种类型的链接。

ln 命令示例

ln 命令的语法很简单:

 ln [option] target_file link_name

让我向您展示一些使用 ln 命令在 Linux 中创建链接的示例。

要创建到文件的硬链接,您可以使用不带任何选项的 ln 命令,如下所示:

 ln target_file link_name

要创建指向文件的符号链接,请使用选项 -s 带有目标文件名和链接名

 ln -s target_file link_name
在 Linux 中使用 ln 命令创建软链接

大多数 Linux 终端会以不同颜色显示软链接及其指向的目的地。

您还会注意到链接以 l 而不是通常的 - 对于长列表视图中的文件。

即使您的终端没有以不同颜色显示软链接,您也可以通过这种方式识别链接。

创建指向目录的软链接与创建指向文件的符号链接相同。 您只需将目标文件名/路径替换为目录名/路径即可。

 ln -s target_directory link_name
在 Linux 中创建指向目录的软链接

您会注意到软链接和硬链接的颜色在 Linux 终端中通常是不同的。 无法硬链接到目录(通常)。

您可以覆盖现有链接。 默认情况下,如果您尝试使用现有链接指向新文件,则会引发错误:

ln: failed to create symbolic link 'soft-link-to-file': File exists

ln 命令为此目的有两个选项:

  • -i:交互模式会询问您是否要覆盖现有链接。
  • -f:强制模式只是更新现有链接,无需任何确认。

假设您想强制更新符号链接。 以下是您可以执行的操作:

ln -sf new_file existing_soft_link

介意添加 s 对于软链接,否则您会将软链接转换为硬链接。

在 Linux 中更新软链接

通常,当您将 ls 命令与 -l选项,它显示它指向的文件。

但是如果有链接链,它就不会显示原始文件。 为了 example,您创建指向文件的链接,然后创建指向第一个链接的另一个链接。 在长列表中,第二个链接将指向第一个链接。

要从链接链中查找原始文件,您可以使用 readlink -f 以下列方式:

readlink -f soft_link

-f options 代表“follow”,如“follow the chain”。

这张图片解释了 example 更好的:

在 Linux 中使用 readlink 命令跟踪链接链

既然您知道如何创建链接,让我们简要介绍一下为什么需要链接? 它们有什么实际用途?

可能有几个用例。 假设您下载了一个带有代码和可执行文件的软件。 你把整个东西都保存在 /opt 目录。 但是要从任何地方运行程序,您需要将其可执行文件放在 /usr/bin 目录。

如果将可执行文件移动到此目录,它可能无法正常工作,因为它需要访问一些代码,并且无法从 /usr/bin 目录。 您可以在此处创建指向此可执行文件的链接 /usr/bin 目录。

这样,程序可以从系统上的任何地方运行,并且程序的可执行文件保留在其原始程序文件夹中。

链接是 Linux 的重要组成部分。 您会发现它们在系统中的许多地方都使用过。 只需查看 /lib 目录,你会看到很多软链接。

接下来是什么?

我强烈建议阅读以下与 Linux 中的链接概念相关的文章:

  • 什么是软链接?
  • 硬链接详解
  • 查找损坏的符号链接
  • Linux中inode的概念

我希望您在本教程中学会了有效地使用 ln 命令。 欢迎提出问题和建议。