链接是对另一个文件的引用,它为同一文件提供多个名称,并允许它们同时位于两个或多个位置。
有两种类型的链接:
- 软连接:也称为符号链接,原始文件的快捷方式;
- 硬链接:这将指向原始文件的内存位置。
下图显示了两种链接的工作方式:
硬链接和软链接都是使用 ln 命令创建的,本文将会介绍如何使用 ln 命令在 Linux 中创建多种类型的链接。
ln 命令示例
ln 命令的语法很简单:
下面我们通过例子来具体看一下。
1,创建指向文件的硬链接
创建指向文件的硬链接,可在不添加任何选项的情况下使用 ln 命令,如下:
2,创建指向文件的软连接
要创建指向文件的软连接,使用 ln 命令的 -s 选项:
在 ls -l 命令的输出列表中,大多数 LInux 终端都会以不同颜色显示软链接及其指向的目标;同时链接都会以 l 开头,而不是普通文件的 -,这也是识别链接的一种方式。
3,创建指向目录的软链接
创建指向目录的软链接与创建指向文件的软链接方法相同,将文件名替换为目录名即可:
你可能会注意到了,在 Linux 终端中,软链接和硬链接的颜色是不同的,一般情况下,无法创建指向目录的硬链接。
4,更新已有的软链接(或硬链接)
链接是可以被覆盖的。默认情况下,如果你使用一个已有的链接指向一个新文件,会报错:
要覆盖现有链接,有两种方式(即 ln 命令的两个选项):
- -i:系统会询问你是否要覆盖现有链接;
- -f:强制覆盖现有链接,不会给确认信息。
比如,我们要强制覆盖一个现有链接,看下面的例子:
在这里需要注意,如果是要覆盖一个软链接的话,需要添加 -s 选项,否则会将软链接转换为硬链接。
通过链接链获取原始文件
通常情况下,使用 ls -l 命令来查看文件的时候,链接会显示它所指向的文件。
但如果存在链接链的话,则不会显示原始文件。例如,创建指向文件的链接,然后创建指向第一个链接的另一个链接;在长列表的输出中,第二个链接将指向第一个链接。
要从链接链中找到原始文件,可以使用 readlink -f 命令,如下所示:
选项 -f 表示 follow,即 follow the chain。
为什么会需要链接
上面我们介绍了如何创建链接,接下来我们再来了解下链接的实际用途。
假设我们下载了一个包含有代码和可执行文件的软件,然后我们将整个软件放在了 /opt 目录中。但是如果想要从任何路径下都可以运行该程序,那需要将可执行文件放到 /usr/bin 目录下。
如果我们将可执行文件放到 /usr/bin 目录下以后,它可能不会正常运行,因为它需要访问某些代码(即随同文件一起被下载的那些代码),但是在 /usr/bin 目录下无法找到这些代码文件。这种情况下,我们就可以在 /usr/bin 目录中创建指向该可执行文件的链接,而不是把可执行文件移动到该目录下。
这样,程序就可以在系统的任何地方运行,其可执行文件仍会保留在原地方。
链接是 Linux 的重要组成部分,它在应用在很多地方。在系统的 /lib 目录下,会有很多软链接存在。