符号链接(symbolic link 或  symlink)是 Linux 中一种文件类型,它指向计算机上的另一个文件或文件夹。符号链接类似于 Windows 中的快捷方式。

有人称符号链接为“软链接”,指 Linux / UNIX 系统中的一种链接,与“硬链接”相反。

软链接与硬链接的区别

软链接类似于快捷方式,可以指向任何文件系统中的另一个文件或目录。

硬链接也是文件和文件夹的快捷方式,但是无法为其他文件系统中的文件夹或文件创建硬链接。

让我们看看怎么创建和删除符号链接。我们还将看到什么是断开的链接,以及如何删除它们。

如何创建符号链接

创建符号链接的语法如下:

ln -s <path to the file/folder to be linked> <the path of the link to be created>

ln 是链接命令。-s 标记表示这个链接应该是软链接。-s 也可以写成-symbolic

默认情况下,ln 命令创建硬链接。接下来是 path to the file (or folder),是你想要链接的文件(或文件夹)的路径(即为其创建快捷方式)。

最后一个参数是 path to link,链接本身(快捷方式)。

如何为文件创建符号链接——示例命令

ln -s /home/james/transactions.txt trans.txt

运行此命令后,你将能够使用 trans.txt 访问 /home/james/transactions.txt。对 trans.txt 的任何修改也将反映在原始文件中。

请注意,上面的命令将在当前目录中创建链接文件 trans.txt。你也可以在以下文件夹链接中创建链接文件:

ln -s /home/james/transactions.txt my-stuffs/trans.txt

当前目录中必须已经有一个名为 “my-stuffs” 的目录——如果没有,该命令将引发错误。

如何为文件夹创建符号链接——示例命令

和上面类似,我们使用:

ln -s /home/james james

这将创建一个名为“ james”的符号链接文件夹,其中将包含 /home/james 的内容。对此链接文件夹的任何更改也会影响原始文件夹。

如何移除一个符号链接

在删除符号链接之前,你可能需要确认文件或文件夹是符号链接,以免损坏文件。

一种方法是:

ls -l <path-to-assumed-symlink>

在终端上运行此命令将显示文件的属性。如果结果中第一个字符是小写字母 “l”,则表示文件/文件夹是符号链接。

你还将在末尾看到一个箭头(->),指示符号链接指向的文件/文件夹。

有两种方法可以删除符号链接:

使用以下语法:

unlink <path-to-symlink>

如果程序没问题,这就删除符号链接。

即使符号链接以文件夹的形式出现,也不要附加“ /”,因为 Linux 将假定它是目录,而  unlink 不能删除目录。

如何使用 rm 移除符号链接

符号链接只是指向原始文件或文件夹的另一个文件或文件夹。可以通过移除链接的文件来移除这个指向关系。

rm <path-to-symlink>

例如:

rm trans.txt
rm james

请注意,尝试执行 rm james/ 会导致错误,因为 Linux 会假设 “james /” 是​​目录,这将需要其他选项,例如 rf。但这不是我们想要的。一个符号链接可能是一个文件夹,但是我们只关心名称。

rm 优于 unlink 的主要好处是,你可以一次删除多个符号链接,就像删除文件一样。

如何找到和删除损坏的链接

当符号链接指向的文件或文件夹更改路径或被删除时,链接被损坏。

例如,如果 “transactions.txt” 从 /home/james 移到 /home/james/personal,则 “trans.txt” 链接将断开。每次访问该文件的尝试都将产生错误:“无此文件或目录”。这是因为链接没有自己的内容。

发现损坏的链接时,可以轻松删除文件。查找损坏的符号链接的简单方法是:

find /home/james -xtype l

这将列出 james 目录中所有损坏的符号链接——从文件到目录再到子目录。

传递 -delete 选项将删除它们,如下所示:

find /home/james -xtype l -delete

总结

符号链接是 Linux 和 UNIX 系统中的一个有意思的功能。

你可以创建易于访问的符号链接,来引用原本不方便访问的文件或文件夹。通过一些练习,你将了解它们如何在直观的水平上工作,并且它们将使你更加有效地管理文件系统。

原文:Symlink Tutorial in Linux – How to Create and Remove a Symbolic Link,作者:Dillion Megida