Linux中的链接文件
Contents
1. 概述
在本教程中,我们将讨论在 Linux 中创建符号链接的不同方法。它们也称为软链接,与硬链接一起,我们可以使用ln 命令创建它们。
在深入研究之前,请务必查看我们对软链接和硬链接 的介绍 。
请注意,本文中的示例使用在 Bash 中测试过的命令,并且应该可以在所有 POSIX 兼容的 shell 中运行。
2. 使用名称创建符号链接
我们可以认为ln有四种形式。
第一种形式要求我们明确命名目标和要创建的链接:
ln -s file.txt link.txt
使用此命令,我们创建了一个名为link.txt的符号链接,它指向 file.txt文件。使用命令ls -l,我们可以看到结果:
-rw-rw-r--. 1 vagrant vagrant 10 Apr 12 15:23 file.txt
lrwxrwxrwx. 1 vagrant vagrant 8 Apr 12 15:23 link.txt -> file.txt
我们可以以相同的方式创建指向目录的符号链接:
ln -s dir link
这也适用于其他形式。
在所有表单中,这是唯一可以创建指向同一目录中文件的链接的表单。当我们看第二种形式时,这一点变得很清楚。
3. 在当前工作目录中创建符号链接
这秒是所有四种形式中最短的。通过省略链接名称,ln将在当前工作目录中创建与目标同名的链接。
例如,我们可以使用以下命令在指向*/var/log的当前目录中创建一个名为log*的链接:
ln -s /var/log
我们的链接将如下所示:
lrwxrwxrwx. 1 vagrant vagrant 8 Apr 12 15:35 log -> /var/log
请注意,如果我们从*/var目录中执行此命令,它将不起作用。让我们cd 进入/var*并再试一次:
cd /var/
ln -s /var/log
我们的系统会抱怨文件已经存在:
ln: failed to create symbolic link ‘./log’: File exists
4. 在当前工作目录中创建多个符号链接
其余两种形式都是关于一次创建多个链接。
让我们在一个语句中链接一个文件和目录:
ln -s /etc/hosts /var/log /home/vagrant
通过这个命令,我们创建了两个链接,分别指向一个文件和一个目录。它们位于目标目录中,在本例中为*/home/vagrant*:
lrwxrwxrwx. 1 vagrant vagrant 10 Apr 12 15:50 hosts -> /etc/hosts
lrwxrwxrwx. 1 vagrant vagrant 8 Apr 12 15:50 log -> /var/log
5. 在目标目录中创建多个符号链接
第四种形式与第三种形式非常相似。唯一的区别是我们现在首先使用*-t*参数声明创建链接的目录:
ln -s -t /home/vagrant /etc/hosts /var/log
结果与我们使用第三种形式相同:
lrwxrwxrwx. 1 vagrant vagrant 10 Apr 12 15:50 hosts -> /etc/hosts
lrwxrwxrwx. 1 vagrant vagrant 8 Apr 12 15:50 log -> /var/log