如何在 Linux 和 UNIX 中创建、更新和删除软链接
Unix 中的符号链接或软链接是一个非常重要的概念,需要在各种 UNIX 操作系统中理解和使用,例如 Linux、Solaris 或 IBM AIX。 符号链接为我们提供了如此强大的功能和灵活性,使我们可以非常轻松地维护事物。 我个人觉得除了 find 、grep 和其他 UNIX 命令之外,创建软链接和更新软链接的命令即 ln -s
也是任何在 UNIX 机器上工作的人都必须使用的命令。 每当我编写脚本或编写任何 UNIX 脚本时,我总是为符号链接编写而不是指向 UNIX 中目录的绝对路径。
它使我们可以灵活地更改符号链接或软链接,而无需对我们久经考验的脚本进行任何更改。 许多不同的核心 Java 项目,这些项目在 Linux 和 UNIX 机器上运行,并广泛使用 UNIX 符号链接或符号链接。
在本 UNIX 基础文章中,我们将看到如何在 UNIX 中创建软链接、如何更新软链接以及 Unix 和 Linux 中软链接和硬链接的区别。 顺便说一下,这篇文章是我们之前的文章 Unix 中的网络命令 和 CVS 命令示例的延续,如果你还没有阅读,你可能会根据我们在 Unix 和 Linux 命令方面的经验找到一些有用的信息。
UNIX 或 Linux 中的符号链接
虽然这个 UNIX 命令文章是为了突出 UNIX 中的软链接和 UNIX 中的硬链接之间的区别,这也是一个非常流行的 UNIX 命令面试问题,但我觉得有必要向大家展示 UNIX 中的软链接的用法,下面是 我在涉及 UNIX 软链接的项目中看到的一些 UNIX 符号链接示例:
1) 在我们的项目中,我们的Java进程选择了最新版本的包来执行,这是一个UNIX软链接。 因此,每当我们进行发布时,通过使用 tar 存档,我们只需要更新最新的 UNIX 符号链接,这使得发布无缝并且回滚非常容易,这反过来又增加了我们 Java 应用程序的稳定性和可预测性。
2) 我们所有的 UNIX 脚本都将位置作为参数,因此它们不知道资源的绝对路径,并且这些资源是通过 UNIX 软链接和环境变量提供的。 每当我们需要进行任何涉及更改资源位置的迁移时,我们脚本的这一功能都会节省大量时间。
3) 关于UNIX软链接的一个重点是它们继承了它们所指向的目录的权限。 这意味着如果你在 Unix 中使用 chmod
命令更改目录的权限,那么软链接的权限也会被更新。
UNIX中软链接和硬链接的区别
在本节中,我们将看到 UNIX 中软链接和硬链接之间的一些区别。 这些区别绝不是完整的,所以如果大家知道 UNIX 软链接和硬链接之间的任何其他区别,请告诉我们。大家还可以让我们知道你是如何使用符号链接或 UNIX 软链接。
UNIX 中的软链接与硬链接
1) 软链接和硬链接之间的第一个区别是 Unix 软链接是指向位于其他地方的程序、文件或目录的指针(就像 Windows 快捷方式一样),而 Unix 硬链接是指向程序和文件的指针,而不是目录。
2) UNIX 软链接和硬链接的第二个主要区别是如果原来的程序、文件或目录被重命名、移动或删除,软链接被破坏,如果你使用 ls -lrt --color
,它会显示为红色。 另一方面,如果原始程序或文件被重命名、移动或删除,则硬链接不会断开
3) 软链接与硬链接的一个不太重要的区别是,如果我们键入 ls -F
我们可以看到哪些文件是 UNIX 软链接,因为它们以 @
结尾
4) 软链接与硬链接的另一个区别是创建它们的方式,要创建一个名为“current”的软链接指向名为“new_package”的文件或目录,请使用:ln -s new_package latest
始终记住此命令 请记住,软链接的名称作为最后一个参数出现。 另一方面,要创建一个名为 myhardlink.txt 的 UNIX 硬链接,它指向一个名为 myfile.txt 的文件,请使用:ln myfile.txt myhardlink.txt
5) UNIX 或 Linux 上软链接和硬链接之间的一个更重要的区别是软链接也可以指向网络挂载目录。 要创建 UNIX 软链接,请记住将选项“**-s** ”与 UNIX 链接命令“ln”一起使用。 虽然 UNIX 中的硬链接不能跨越磁盘驱动器,因此我们不能在 /dev/hdb 上有一个硬链接来引用 /dev/hda 上的程序或文件
在 UNIX 中创建符号链接或软链接
在这里我们将看到如何在 UNIX 中创建软链接和硬链接,在 Linux 中也称为符号链接或符号链接。 对于我们的符号链接示例,我们将使用一个名为 symlinks 的文件夹,其中包含一些代表特定应用程序的不同版本的目录,我们将学习如何在 Unix 和 Linux 中创建符号链接、删除符号链接和更新符号链接或软链接。
这是我们示例符号链接目录的初始快照,当前目录中没有符号链接。
$ ls -lrt
total 0
drwxr-xr-x+ 2 Jiyik None 0 Apr 22 12:14 1.2
drwxr-xr-x+ 2 Jiyik None 0 Apr 22 12:14 1.3
现在我们将在符号链接目录中创建 UNIX 中的软链接。
$ ln -s 1.3 latest
这将创建一个名称为“latest”的软链接,指向目录“1.3”。 看看UNIX下这个软链接有没有创建。 我们可以看到在最后一行创建了一个符号链接。
注意
lrwxrwxrwx(第一个“l”表示它是 UNIX 中的链接)
$ ls -lrt
total 1
drwxr-xr-x+ 2 Jiyik None 0 Apr 22 12:14 1.2
drwxr-xr-x+ 2 Jiyik None 0 Apr 22 12:14 1.3
lrwxrwxrwx 1 Jiyik None 3 Apr 22 12:17 latest -> 1.3
在 UNIX 中更新符号链接或软链接
我们已经了解了如何在 UNIX 中创建符号链接,现在我们将了解如何更新该符号链接或软链接而不删除它。
$ ln -nsf 1.2 latest
这将更新符号链接最新指向目录“1.2”而不是“1.3”。 注意命令行选项 -nsf
。 现在让我们看看这个符号链接是否更新了。
$ ls -lrt
total 1
drwxr-xr-x+ 2 Jiyik None 0 Apr 22 12:14 1.2
drwxr-xr-x+ 2 Jiyik None 0 Apr 22 12:18 1.3
lrwxrwxrwx 1 Jiyik None 3 Apr 22 12:19 latest -> 1.2
现在让我们在此目录中创建另一个指向 1.2 和最新指向 1.3 的链接
$ ln -nsf 1.3
$ ln -s 1.2 previous
$ ls -lrt
total 2
drwxr-xr-x+ 2 Jiyik None 0 Apr 22 12:14 1.2
lrwxrwxrwx 1 Jiyik None 3 Apr 22 12:20 latest -> 1.3
drwxr-xr-x+ 2 Jiyik None 0 Apr 22 12:21 1.3
lrwxrwxrwx 1 Jiyik None 3 Apr 22 12:24 previous -> 1.2
如果在这里注意到当我们运行 ls –lrt
时,总计将显示该目录中存在的 UNIX 软链接的数量,我们可以在前面的示例中看到它从 0 变为 1,现在由于两个符号链接而变为 2 出现在这里。
在 UNIX 中删除符号链接或软链接
删除符号链接类似于删除任何文件; 我们需要使用 rm
UNIX 命令来删除任何符号链接。 这只会删除符号链接,不会删除源目录。
$ rm latest previous
$ ls -lrt
total 0
drwxr-xr-x+ 2 Jiyik None 0 Apr 22 12:14 1.2
drwxr-xr-x+ 2 Jiyik None 0 Apr 22 12:18 1.3
UNIX 符号链接或软链接提示
以下是与在 UNIX 中创建软链接相关的更多提示
1) 使用 ln -nfs
更新软链接。 正如我之前所说,我们有一个指向最新包的最新符号链接,每次发布时我们都需要更新这个 Linux 软链接,在知道这个选项之前,我习惯先删除旧的软链接,然后创建一个新的软链接 链接是一个两步过程,但这是最快的方法,只需执行ln -nfs new_pakcage latest
,最新的软链接将指向一个新包。
2) 结合UNIX软链接使用 pwd
,找出你的软链接指向的实际路径。 很多时候我们需要知道在通过各种软链接和硬链接导航后我们在哪里,这里的 pwd 告诉我们当前工作目录在 UNIX 中的绝对路径。
3) 要找出任何目录中的所有 UNIX 软链接和硬链接,请执行以下命令 ls -lrt | grep "^l"
。 它是我的 UNIX 命令即兴创作的扩展,通过使用命令 ls -lrt | grep "^d"
找出任何目录中的所有目录。
$ ls -lrt | grep "^l"
lrwxrwxrwx 1 Jiyik None 3 Apr 22 12:20 latest -> 1.3
lrwxrwxrwx 1 Jiyik None 3 Apr 22 12:24 previous -> 1.2
在这里,我们利用了 Unix 中的 ls
命令在每个条目前面显示“l”的事实,然后我们对以“l”开头的链接和以“d”开头的目录执行 UNIX grep。
相关文章
在 Linux 中安装 MySQL 客户端
发布时间:2023/05/09 浏览次数:72 分类:MySQL
-
在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。
在 Linux 中更新 YUM
发布时间:2023/05/04 浏览次数:82 分类:操作系统
-
本文介绍了 Linux 中的 yum update 命令。本文将教我们如何在 Linux 中更新 YUM,以及如何在 Linux 系统上安装、更新、删除、查找和管理包。
在 Linux 中安装 Deb 文件
发布时间:2023/05/04 浏览次数:130 分类:操作系统
-
本文介绍如何在 Linux 中安装 deb 文件。在这篇 Linux 文章中,我们将学习如何在 Linux 系统上安装 .deb(Debian 软件包)文件。 我们还将看到如何在安装后删除 .deb 文件。
Linux 中的 lsof 命令
发布时间:2023/05/04 浏览次数:82 分类:操作系统
-
在这篇 Linux 文章中,我们将了解 Linux 操作系统中的 lsof 命令。 我们将看到如何在 Linux 中将此命令用于不同目的。
Linux 解决不能执行二进制文件问题
发布时间:2023/05/04 浏览次数:187 分类:操作系统
-
在本文中,我们将学习如何在 Linux 中执行二进制文件。 如果 Linux 无法执行二进制文件,我们还将学习如何解决错误。
Linux 中错误 Mesg: Ttyname Failed: Inappropriate Ioctl for Device Error
发布时间:2023/05/04 浏览次数:145 分类:操作系统
-
本文介绍如何在 Linux 中解决 mesg: ttyname failed: inappropriate ioctl for device 错误。在 Linux 中,这个错误是由于默认的 vagrant 配置 config.ssh.shell 与 bash -l 交互导致的。
Linux 中的 ps aux 命令
发布时间:2023/05/04 浏览次数:69 分类:操作系统
-
本篇文章将讨论 Linux 中的 ps aux 命令。如果将 aux 快捷方式与 ps 命令一起使用,它将显示用户需要的最多信息,并可以为您提供系统运行进程的当前状态。
Linux 中的 NTP
发布时间:2023/05/04 浏览次数:137 分类:操作系统
-
本篇文章将讨论 Linux 中的 ntp。NTP 是大多数 IT 基础设施使用的核心协议。 使用它的目的是同步日期和时间信息。
在 Linux 中计算文件中的唯一行
发布时间:2023/05/04 浏览次数:70 分类:操作系统
-
计算文件中的唯一行是 Linux 中的一项常见任务,可以使用多种不同的工具和方法来执行此操作。使用 sort 和 uniq 命令计算文件中的唯一行数