如何在 Linux 中创建符号链接 [完整指南]如何在 Linux 中创建符号链接 [完整指南]如何在 Linux 中创建符号链接 [完整指南]如何在 Linux 中创建符号链接 [完整指南]
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 中创建符号链接 [完整指南]

这个详细的教程告诉您什么是符号链接、如何创建符号链接以及与符号链接相关的其他重要内容。

Linux 中的符号链接是什么以及为什么使用它?

符号链接,也称为符号链接或软链接,是一种特殊类型的文件,它仅指向另一个文件或目录就像 Windows 中的快捷方式一样。创建符号链接就像为实际文件创建别名一样。

如果您尝试访问符号链接,您实际上访问的是符号链接指向的目标文件。对链接文件内容执行的更改会更改实际目标文件的内容。

如果使用带选项 -l 的 ls 命令,则符号链接如下所示:

lrwxrwxrwx 1 abhishek abhishek 23 Jul  2 08:51 link_prog -> newdir/test_dir/prog.py

在大多数 Linux 发行版中,链接以与其余条目不同的颜色显示,以便您可以将链接与常规文件和目录区分开。

符号链接提供了一种组织和共享文件的便捷方法。它们提供对冗长且令人困惑的目录路径的快速访问。它们大量用于 Linux 中的链接库。

现在您已经了解了一些符号链接,让我们看看如何创建它们。

如何在 Linux 中创建符号链接

要创建从链接名称到目标文件的符号链接,您可以使用带 -s 选项的 ln 命令,如下所示:

ln -s target_file link_name

-s 选项在这里很重要。它确定该链接是软链接。如果您不使用它,它将创建一个硬链接。我将在另一篇文章中解释软链接和硬链接之间的区别。

如何跟踪符号链接

要了解链接实际指向哪个真实文件,请使用 realpath 命令:

realpath link_name

还有其他方法可以跟踪到其源文件的软链接,但 realpath 是最简单的。

如何删除符号链接

Linux 中没有用于删除符号链接的特殊命令。您可以使用与删除文件和目录相同的 rm 命令。

rm link_name

删除链接不会删除它链接到的源文件。

您也可以在一个命令中删除多个符号链接:

rm link1 link2

还有一个取消链接命令。但与它的名字给人的印象不同,unlink 命令并不是专门用于删除链接的。当然,它可以删除文件、文件夹和链接。然而,它有一定的局限性,这使得 rm 命令成为删除链接的更好选择。

?
如果要使用 find 命令列出符号链接,可以使用 -type l 选项。

关于符号链接的注意事项

符号链接有时可能会令人困惑,因此您应该注意一些事项。

对链接所做的更改反映在原始文件中

毕竟,这就是链接的全部目的。您可以通过访问链接来访问目标文件。您可以通过链接对目标文件进行更改。让我们看一下例子。

我在 newdir/test_dir 中有一个文件 prog.py 。它具有以下属性:

-rw-r--r-- 1 abhishek abhishek 163 Apr 13 15:07 newdir/test_dir/prog.py

现在,我将在当前目录中创建指向该文件的软链接:

ln -s newdir/test_dir/prog.py link_prog

以下是新创建的链接的属性:

lrwxrwxrwx 1 abhishek abhishek 23 Jul  2 08:51 link_prog -> newdir/test_dir/prog.py

注意到该行开头的l(是L,而不是一)吗?如果你熟悉Linux中的文件权限,你就会知道‘l’表示链接,因此它告诉你这个文件实际上是一个链接。回忆一下,- 表示文件,d 表示目录。

现在,如果我使用此链接更改内容或属性,相同的内容将反映在目标文件中。例如,我在软链接上使用 touch 命令,您会注意到它更改了目标文件的时间戳。

touch link_prog 

ls -l newdir/test_dir/prog.py 

-rw-r--r-- 1 abhishek abhishek 163 Jul  2 10:04 newdir/test_dir/prog.py

它链接到文件或目录吗?你可能不知道!

您如何知道链接是否指向文件或目录?除非您沿着路径访问目标文件本身,否则您无法知道这一点。

您可以创建指向不存在的文件或目录的链接

是的,这是完全可能的。这就是为什么在 Linux 中创建软链接时应该小心的原因。您要链接的目标文件不需要存在。创建指向不存在的文件/目录的链接时,您不会收到任何错误或警告。

仅当您尝试通过链接或单独访问目标文件时,才会出现错误。但 ls 命令仍然有效。

ln -s non_existant_dir link_dir
less link_dir
link_dir: No such file or directory

符号链接是使用 777 权限创建的,但没有任何意义

您是否注意到符号链接上的文件权限?符号链接始终使用 777 权限 (rwxrwxrwx) 创建。对于常规文件,这意味着任何人都可以访问该文件。但链接的情况并非如此。

lrwxrwxrwx 1 abhishek abhishek 23 Jul  2 08:51 link_prog -> newdir/test_dir/prog.py

如果按原样对待链接上的文件权限,则任何用户都可以创建指向安全文件的符号链接并自由访问它。这将是一个重大的安全问题。值得庆幸的是,这种情况并没有发生。因为目标文件的权限很重要,而不是链接的权限。

您可以使用 chmod 命令更改链接的权限,但它会更改链接文件的权限,而不是链接本身。

您可以链接到链接的链接,也称为链式符号链接

您可以创建指向另一个链接的符号链接等等。这称为链式符号链接。最好避免它们,因为它会造成更多混乱。

嗯,就是这样。我想您现在对软链接有了更好的了解,并且知道如何在 Linux 中创建符号链接。您可以阅读有关 symlinks 命令的内容,该命令可以帮助您在 Linux 中找到损坏的符号链接并轻松管理它们。

如果您有疑问或建议,请在下方留言。

©2015-2025 艾丽卡 support@alaica.com