2

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

 1 year ago
source link: https://www.51cto.com/article/721017.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

作者:刘光录 2022-10-21 08:18:54
硬链接和软链接都是使用 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 目录下,会有很多软链接存在。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK