如何在 Linux 上创建指向目录的软链接?


软链接(符号链接)被生成作为系统中可用文件或文件夹的快捷方式。通常,这些软链接用于链接库。软链接允许在不同的文件系统或目标位置存储同一文档的多个克隆。

此链接引用原始文档的路径和地址。软链接包含不同的方面,例如 -

  • 软链接可以链接到目录和普通文件。

  • 删除软链接后,原始文档仍然可用。

  • 当您移动或删除原始文件时,符号链接不起作用。

  • 软链接通常用于常用文件,因此您可以快速访问这些文件,而无需键入整个位置。

  • 软文件和实际链接文件的 inode 号码不同。

软链接的功能类似于网络上的超链接。如果您还想在 Linux 上创建指向目录的软链接,请遵循本指南。

如何在 Linux 上创建指向目录的软链接?

“ln”是一个命令行实用程序,用于在文件或文件夹之间创建链接。默认情况下,它创建硬链接。使用 ln 命令的 -s 或 --symbolic 选项,您可以在 Linux 上创建指向目录的软链接。以下是您可以遵循的 ln 命令的基本语法 -

ln -s <source file/directory name> <target directory/file name> <soft_link name>
Or
ln --symbolic <source directory name> <target directory/file name> <soft_link name>

例如,让我们通过 ln 命令将“Documents”与“Link”目录链接 -

~$: ln -s Documents Link

如果您想验证软链接,请转到文件管理器并检查可用的链接文件 -

Figure 1

在成功创建指向目录的软链接后,上述命令不会产生任何输出。因此,您可以使用以下命令验证新创建的软链接 -

ls -l <targeted soft_link directory/file name> <soft_link name>

让我们使用一些示例来更好地理解软链接的创建。

~$: ls -l Documents Link
lrwxrwxrwx 1 prateek prateek 9 Feb 21 12:22 Link -> Documents
Documents: total 24 
-rw-rw-r-- 1 prateek prateek     0 Feb 20 16:10 bash.sh
-rw-rw-r-- 1 prateek prateek     0 Feb 20 16:11 file.txt 
drwxrwxr-x 2 prateek prateek  4096 Feb 20 16:28 'Images'
drwxrwxr-x 2 prateek prateek 20480 Feb 20 16:28 'Information'

为文件创建指向同名目录的软链接

这里我们在 Documents 目录中有一个文件 'example.txt',并将此文件链接到 Downloads 目录 -

~$:ln -s /home/prateek/Documents/example.txt Downloads

要验证软链接,请运行以下命令 -

~$:ls -l Downloads/example.txt
lrwxrwxrwx 1 prateek prateek 35 Feb 21 13:01 Downloads/example.txt -> /home/prateek Documents example.txt

额外提示 - 在上面的命令中,我们使用了绝对路径,这很容易且推荐。但是,您必须正确地澄清路径。为此,您可以运行以下命令以使软链接目录成为终端的当前目录 -

~$: cd ~/Downloads
~$: ln -s /home/prateek/Documents/example.txt

为文件创建指向不同名称目录的软链接

在此示例中,我们将在 Downloads 目录中创建指向 Documents 目录的软链接,命名为 Documents1。在这里,我们将遵循上述命令,然后提及您要创建链接的名称。它的命令将类似于这样 -

~$: ln -s /home/prateek/Documents Downloads/Documents1
~$: ls -l Downloads/Documents1
~$: lrwxrwxrwx 1 prateek prateek 23 Feb 21 13:21 Downloads/Documents1 -> /home/prateek Documents

这样,您可以为文件创建指向具有不同链接名称的目录的软链接文件。

软链接的权限

当我们更改软链接的权限时,它会通过 chmod 命令的帮助转发到目标目录或文件。发生这种情况是因为 chmod 命令将权限更改应用于目标目录,无论更改是否成功。因此,

  • 所有软链接始终允许为 0777/lrwxrwxrwx。

  • 软链接权限永远无法更改。

覆盖软链接

当创建已存在的软链接时,ln 命令会打印错误消息(无法创建软链接)。

使用 ln 命令的 -f 或 --force 选项,您可以覆盖软链接的目标路径并解决此错误。

ln -sf <path of the source file/directory> <path of the target file/directory>

注意 - 在更新版本的 Linux 下对原始文件进行的更改将自动更新或覆盖软链接。

查找所有软链接

您可以使用以下 find 命令查看任何文件夹和文件中存在的所有软链接 -

~$: find <path of the file/directory> -type l

例如,让我们找出 Downloads 目录的所有软链接 -

~$: find Downloads -type l
/home/prateek/Downloads/example.txt
/home/prateek/Downloads/Documents1

查找损坏的链接

如果您将文件从一个目录移动或删除到另一个目录,则软链接将自动断开。由于链接没有内容,因此每次尝试访问该文件都会导致“没有此文件或目录”。您可以再次使用以下 find 命令来发现这些损坏的链接。

~$: find <path of the file/directory> -xtype l

因此,此命令将显示目录或文件中所有损坏的软链接。您可以通过向上述命令添加 -删除选项来一次删除所有损坏的链接。

删除软链接

软链接也像普通文件一样,您可以使用 rm 命令删除它们。除此之外,Linux 还提供了一个名为 unlink 的单独实用程序来删除软链接,您可以使用它来删除软链接。

您不需要任何参数即可使用 unlink 命令删除软链接。请按照以下命令删除软链接 -

~$: unlink <path of the soft link>

在这里,我们将使用 Downloads 目录取消链接 example.txt 文件 -

~$: unlink /home/prateek/Documents/example.txt

此外,您还可以使用 rm 命令删除软链接。与 unlink 命令相比,rm 命令的优势在于您可以一次删除多个软链接 -

~$: rm <path of the file/directory> soft link1 softlink2

结论

使用软链接,您可以从多个位置访问任何文件或目录。使用 ln 命令的 -s 选项,您可以在 Linux 中创建软链接或符号链接。在这里,我们描述了创建指向目录的软链接的完整过程。此外,我们还解释了删除、定位和删除这些链接的方法。

更新于: 2023年8月22日

3K+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告