如何建立目录的软链接

best365体育入口中文版 时间: 2025-07-21 01:44:34 作者: admin 查阅次数: 9994 公众评价: 586
如何建立目录的软链接

1. 概述

众所周知,在 Linux 命令行下,我们可以创建指向普通文件的链接

。有时,我们可能希望创建指向目录的链接。

在本快速教程中,我们将了解如何使用ln

命令执行此操作。

我们将专注于创建符号(软)链接

而不是硬链接。

2. 创建指向单个目录的链接

创建指向一个目录的链接是 ln命令的一个常见用例。语法与创建文件的软链接相同:

ln -s TARGET_DIR LINK_NAME

现在,让我们看看它的实际效果。让我们创建一个软链接*/tmp/test/linked_etc目录到目录/etc*:

$ ln -s /etc /tmp/test/linked_etc

$ stat /tmp/test/linked_etc

File: /tmp/test/linked_etc -> /etc

Size: 4 Blocks: 0 IO Block: 4096 symbolic link

Device: 30h/48d Inode: 46728 Links: 1

Access: (0777/lrwxrwxrwx) Uid: ( 1000/ kent) Gid: ( 1000/ kent)

...

使用ln命令创建链接后 ,我们使用 stat

命令列出*/tmp/test/linked_etc*的详细信息。

在stat命令的输出中 ,我们可以看到符号链接已经创建成功。

如果我们不提供 LINK_NAME , ln 命令将在当前工作目录下创建一个带有目标目录名称的链接:

$ pwd

/tmp/test

$ ln -s /etc

$ stat /tmp/test/etc

File: /tmp/test/etc -> /etc

Size: 4 Blocks: 0 IO Block: 4096 symbolic link

Device: 30h/48d Inode: 46735 Links: 1

Access: (0777/lrwxrwxrwx) Uid: ( 1000/ kent) Gid: ( 1000/ kent)

...

如示例所示,链接etc已在当前工作目录*/tmp/test* 下创建。

3. 创建指向多个目录的链接

我们已经了解了如何创建指向单个目录的链接。ln命令允许我们一次创建指向多个目标目录的链接。

现在,让我们看一下执行此操作的语法:

ln -s -t DIR_TO_CREATE_LINKS TARGET_DIR1 TARGET_DIR2 ...

像往常一样,让我们通过一个例子来了解命令是如何工作的。

假设我们要在 /tmp/test下创建两个软链接,指向 Java JDK 目录*/usr/lib/jvm/java-15-jdk和 Python 目录/usr/lib/python3.9*:

$ ln -s -t /tmp/test /usr/lib/jvm/java-15-jdk /usr/lib/python3.9

$ stat /tmp/test/java-15-jdk /tmp/test/python3.9

File: /tmp/test/java-15-jdk -> /usr/lib/jvm/java-15-jdk

Size: 24 Blocks: 0 IO Block: 4096 symbolic link

Device: 30h/48d Inode: 46771 Links: 1

Access: (0777/lrwxrwxrwx) Uid: ( 1000/ kent) Gid: ( 1000/ kent)

...

File: /tmp/test/python3.9 -> /usr/lib/python3.9

Size: 18 Blocks: 0 IO Block: 4096 symbolic link

Device: 30h/48d Inode: 46772 Links: 1

Access: (0777/lrwxrwxrwx) Uid: ( 1000/ kent) Gid: ( 1000/ kent)

...

如 上面的stat输出所示,这两个链接是在目录 /tmp/test下创建的,并指向所需的目标目录。

或者,我们可以以另一种形式创建指向多个目录的链接:

ln -s TARGET_DIR1 TARGET_DIR2 ... DIR_TO_CREATE_LINKS

这次,我们不使用 -t选项。相反,我们将DIR_TO_CREATE_LINKS目录放在参数列表的末尾。

示例始终是说明命令如何工作的好方法。

现在,让我们在新目录*/tmp/test2*下创建指向 Python 和 Java 目录的链接:

$ ln -s /usr/lib/jvm/java-15-jdk /usr/lib/python3.9 /tmp/test2

$ stat /tmp/test2/java-15-jdk /tmp/test2/python3.9

File: /tmp/test2/java-15-jdk -> /usr/lib/jvm/java-15-jdk

Size: 24 Blocks: 0 IO Block: 4096 symbolic link

Device: 30h/48d Inode: 46811 Links: 1

Access: (0777/lrwxrwxrwx) Uid: ( 1000/ kent) Gid: ( 1000/ kent)

...

File: /tmp/test2/python3.9 -> /usr/lib/python3.9

Size: 18 Blocks: 0 IO Block: 4096 symbolic link

Device: 30h/48d Inode: 46812 Links: 1

Access: (0777/lrwxrwxrwx) Uid: ( 1000/ kent) Gid: ( 1000/ kent)

...

stat输出告诉我们在 /tmp/test2下创建了两个链接。

4. 权限

到目前为止,我们已经了解到创建到目录的软链接是多么容易。

而且,如果我们仔细阅读stat命令的上述所有输出,我们会看到所有软链接的权限都是相同的:0777/lrwxrwxrwx。

我们应该记住,在 Linux 中,不使用符号链接的文件系统权限。权限始终为0777。

目标文件自身的权限控制着目标文件或目录的访问方式。

此外,如果我们更改软链接的权限,chmod命令会将更改转发到目标文件或目录。不管修改成功与否,软链接的权限还是0777。

让我们通过一个例子来理解它。

首先,让我们找到我们要链接的两个目录:

kent$ ls -ld /etc /home/kent/Desktop/aDirectory

drwxr-xr-x 131 root root 12288 Mar 26 11:07 /etc

drwxr-xr-x 2 kent kent 4096 Mar 26 23:23 /home/kent/Desktop/aDirectory

接下来,我们将在*/tmp/test3*目录下创建两个指向上述目录的链接:

kent$ ln -s /etc /home/kent/Desktop/aDirectory /tmp/test3

kent$ ls -l /tmp/test3/*

lrwxrwxrwx 1 kent kent 29 Mar 26 23:27 /tmp/test3/aDirectory -> /home/kent/Desktop/aDirectory/

lrwxrwxrwx 1 kent kent 4 Mar 26 23:27 /tmp/test3/etc -> /etc/

很好,我们已经创建了两个链接。最后,我们尝试将两个软链接的权限改为700:

kent$ chmod 700 /tmp/test3/etc

chmod: changing permissions of '/tmp/test3/etc': Operation not permitted

我们不能更改软链接*/tmp/test3/etc* 的权限。这是因为chmod命令会将权限更改应用到目标目录*/etc*。

显然,作为普通用户“ kent ” ,我们无权更改*/etc*的权限 。

接下来,让我们看看如果我们更改另一个链接的权限会发生什么:

kent$ chmod 700 /tmp/test3/aDirectory

kent$ ls -ld /home/kent/Desktop/aDirectory

drwx------ 2 kent kent 4096 Mar 26 23:23 /home/kent/Desktop/aDirectory/

如输出所示,目标目录*/home/kent/Desktop/aDirectory*的权限已从“ drwxr-xr-x ”更改为“ drwx—— ”。

最后我们看看这两个chmod命令会不会影响两个软链接的权限:

kent$ ls -l /tmp/test3/*

lrwxrwxrwx 1 kent kent 29 Mar 26 23:27 /tmp/test3/aDirectory -> /home/kent/Desktop/aDirectory/

lrwxrwxrwx 1 kent kent 4 Mar 26 23:27 /tmp/test3/etc -> /etc/

因此,我们无法更改软链接的权限——它始终是777。

关联

巴西世界杯女裁判 巴西 女裁判
beat365体育亚洲

巴西世界杯女裁判 巴西 女裁判

📅 07-16 👁️ 9746
没钥匙怎么开u型锁0
best365体育入口中文版

没钥匙怎么开u型锁0

📅 07-05 👁️ 2980
天使轮是什么,满足天使轮的5大要求
beat365体育亚洲

天使轮是什么,满足天使轮的5大要求

📅 07-05 👁️ 6392

链接