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

linuxoperating systemopen source

软链接(符号链接或符号链接)是指向系统中可用文件或文件夹的快捷方式。通常,这些软链接用于链接库。软链接允许在不同的文件系统或目标中存储同一文档的多个副本。

此链接指向原始文档的路径和地址。软链接包含多个方面,例如:-

  • 软链接可以链接到目录和常规文件。

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

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

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

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

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

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

"ln"是一个命令行实用程序,用于在文件或文件夹之间创建链接。默认情况下,它会创建硬链接。在 Linux 上,您可以使用 ln 命令的 -s 或 --symbolic 选项创建指向目录的软链接。以下是您可以遵循的 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

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

图 1

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

ls -l <目标软链接目录/文件名> <软链接名称>

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

~$: 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 2021年2月 13:01 Downloads/example.txt -> /home/prateek Documents example.txt

额外提示 − 在上面的命令中,我们使用了绝对路径,这很简单,也推荐使用。但是,您必须正确指定路径。为此,您可以运行以下命令将软链接目录设为终端的当前目录 −

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

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

在此示例中,我们将创建一个指向 Downloads 目录中名为 Documents1 的 Documents 目录的软链接。在这里,我们将遵循上述命令,然后输入要创建链接的名称。它的命令类似如下:-

~$: ln -s /home/prateek/Documents Downloads/Documents1
~$: ls -l Downloads/Documents1
~$: lrwxrwxrwx 1 prateek prateek 2021年2月23日 13:21 Downloads/Documents1 -> /home/prateek Documents

这样,您就可以创建一个指向不同目录的软链接文件,并使用不同的链接名称。

软链接的权限

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

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

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

覆盖软链接

ln 命令在创建已存在的软链接时会打印错误消息(创建软链接失败)。

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

ln -sf <源文件/目录的路径> <目标文件/目录的路径>

注意 − 在更新版本的 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 <文件/目录的路径> -xtype l

结果,此命令将显示目录或文件中所有已断开的软链接。您可以通过在上述命令中添加 -delete 选项来一次性删除所有已断开的链接。

删除软链接

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

使用 unlink 命令删除软链接无需任何参数。按照以下命令删除软链接 -

~$: unlink <软链接路径>

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

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

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

~$: rm <文件/目录的路径> soft link1 softlink2

总结

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


相关文章


有用资源