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

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

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

有两种类型的链接:

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

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

图片

硬链接和软链接都是使用 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 目录下,会有很多软链接存在。

责任编辑:庞桂玉 来源: TIAP
相关推荐

2023-11-15 08:27:46

Linux系统

2020-06-01 19:00:42

Linux软链接硬链接

2017-01-15 15:27:51

Linux软连接和硬链接

2019-11-01 11:06:02

Linux操作系统Windows

2022-02-28 09:44:09

Linux硬链接软链接

2018-11-09 10:30:05

Linux硬链接软链接

2018-11-09 10:10:09

Linux硬链接软链接

2021-06-18 08:15:37

Linux软链接硬链接

2019-06-21 10:52:28

软连接硬链接Linux

2023-02-06 17:49:35

Linux符号链接

2010-05-04 13:09:21

Unix操作系统

2021-07-16 10:20:56

Linux 硬链接Linux 系统

2023-07-25 16:55:15

Linuxinode

2023-03-05 16:36:14

Linux链接目标文件

2023-02-13 11:26:03

符号链接Linux

2024-01-29 10:20:39

Obsidian链接

2013-11-14 11:38:20

Linux Kerne编译

2014-01-14 10:22:21

LinuxLinux命令

2010-03-01 16:40:40

Linux Makef

2010-02-25 15:11:48

Linux Makef
点赞
收藏

51CTO技术栈公众号