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

有两种类型的链接:

软连接:也称为符号链接,原始文件的快捷方式;硬链接:这将指向原始文件的内存位置。

下图显示了两种链接的工作方式:


(资料图片)

硬链接和软链接都是使用 ln 命令创建的,本文将会介绍如何使用 ln 命令在 Linux 中创建多种类型的链接。

ln 命令示例

ln 命令的语法很简单:

ln [option] target_file link_name

下面我们通过例子来具体看一下。

1,创建指向文件的硬链接

创建指向文件的硬链接,可在不添加任何选项的情况下使用 ln 命令,如下:

ln target_file link_name

2,创建指向文件的软连接

要创建指向文件的软连接,使用 ln 命令的 -s 选项:

ln -s target_file link_name

在 ls -l 命令的输出列表中,大多数 LInux 终端都会以不同颜色显示软链接及其指向的目标;同时链接都会以 l 开头,而不是普通文件的 -,这也是识别链接的一种方式。

3,创建指向目录的软链接

创建指向目录的软链接与创建指向文件的软链接方法相同,将文件名替换为目录名即可:

ln -s target_directory link_name

你可能会注意到了,在 Linux 终端中,软链接和硬链接的颜色是不同的,一般情况下,无法创建指向目录的硬链接。

4,更新已有的软链接(或硬链接)

链接是可以被覆盖的。默认情况下,如果你使用一个已有的链接指向一个新文件,会报错:

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

要覆盖现有链接,有两种方式(即 ln 命令的两个选项):

-i:系统会询问你是否要覆盖现有链接;-f:强制覆盖现有链接,不会给确认信息。

比如,我们要强制覆盖一个现有链接,看下面的例子:

ln -sf new_file existing_soft_link

在这里需要注意,如果是要覆盖一个软链接的话,需要添加 -s 选项,否则会将软链接转换为硬链接。

通过链接链获取原始文件

通常情况下,使用 ls -l 命令来查看文件的时候,链接会显示它所指向的文件。

但如果存在链接链的话,则不会显示原始文件。例如,创建指向文件的链接,然后创建指向第一个链接的另一个链接;在长列表的输出中,第二个链接将指向第一个链接。

要从链接链中找到原始文件,可以使用 readlink -f 命令,如下所示:

readlink -f soft_link

选项 -f 表示 follow,即 follow the chain。

为什么会需要链接

上面我们介绍了如何创建链接,接下来我们再来了解下链接的实际用途。

假设我们下载了一个包含有代码和可执行文件的软件,然后我们将整个软件放在了 /opt 目录中。但是如果想要从任何路径下都可以运行该程序,那需要将可执行文件放到 /usr/bin 目录下。

如果我们将可执行文件放到 /usr/bin 目录下以后,它可能不会正常运行,因为它需要访问某些代码(即随同文件一起被下载的那些代码),但是在 /usr/bin 目录下无法找到这些代码文件。这种情况下,我们就可以在 /usr/bin 目录中创建指向该可执行文件的链接,而不是把可执行文件移动到该目录下。

这样,程序就可以在系统的任何地方运行,其可执行文件仍会保留在原地方。

链接是 Linux 的重要组成部分,它在应用在很多地方。在系统的 /lib 目录下,会有很多软链接存在。

推荐内容