如何在 Linux 中删除软链接

符号链接,也称为软链接或符号链接,在 Linux 中是一种特殊类型的文件,可用作另一个文件的快捷方式。

您可以使用 ln 命令创建软链接。 但是删除它们呢?

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

rm symbolic_link_name

您也可以在这里取消链接命令。 不要直呼其名。 它不仅用于删除链接; 它还可以删除文件。

unlink symbolic_link_name

让我们详细看看。

您所要做的就是给出命令链接的路径名称:

rm name_or_path_of_link

让我们看看它 example. 你能在 ls 命令的长列表输出中识别出软链接吗?

[email protected]:~/test$ ls -l
total 4708
-rw-rw-r-- 1 abhishek abhishek 4794657 Sep 27 20:36 export.json
-rw-rw-r-- 1 abhishek abhishek     311 Sep 22 12:19 line.txt
lrwxrwxrwx 1 abhishek abhishek      26 Oct 17 11:24 mylink -> ./Documents/sample-mark.md
-rw-rw-r-- 1 abhishek abhishek     106 Sep 27 20:39 redirects.json
-rw-r--r-- 1 abhishek abhishek   12817 Sep 22 12:28 sample.txt

该链接称为 mylink。 您可以在长列表中识别它,因为它以字符开头 l (用于链接),名称显示它指向的文件。

让我删除链接并验证它:

[email protected]:~/test$ rm mylink 
[email protected]:~/test$ ls -l
total 4708
-rw-rw-r-- 1 abhishek abhishek 4794657 Sep 27 20:36 export.json
-rw-rw-r-- 1 abhishek abhishek     311 Sep 22 12:19 line.txt
-rw-rw-r-- 1 abhishek abhishek     106 Sep 27 20:39 redirects.json

?删除软链接不会删除它链接到的原始文件。

您可以验证原始文件是否仍然存在。

您可以使用 rm 命令一次删除多个符号链接:

rm symlink1 symlink2 symlink3

另一种删除软链接的方法是使用 unlink 命令。 听起来此命令仅用于删除链接,它也可以删除文件。

要使用取消链接删除链接,请像这样使用它。

unlink name_or_path_of_link

我会用同样的 example 我之前用过。

取消链接命令非常有限。 您不能使用它一次删除多个链接。

您可以创建指向文件和目录的软链接。 虽然您必须使用 -r 选项删除目录,但指向目录的链接不需要它。

使用与删除文件链接相同的方式:

rm name_or_path_to_link_to_dir

不要在链接中使用斜杠,否则它会抱怨。

[email protected]:~/test$ rm link_to_dir/
rm: cannot remove 'link_to_dir/': Is a directory

这是一个 example 删除目录的软链接。

在 Linux 中删除指向目录的链接

⚠️永远不要强行删除指向目录的链接 rm -f 因为它会删除目录的内容。

强制删除指向目录的链接会删除实际目录的内容

与软链接不同,硬链接与原始文件几乎没有区别。 您只能通过 inode 编号注意到它。

你能识别输出中的硬链接和文件吗? 注意 inode 编号。

[email protected]:~/test$ ls -li
total 4716
 544057 -rw-rw-r-- 1 abhishek abhishek 4794657 Sep 27 20:36 export.json
 544884 -rw-rw-r-- 2 abhishek abhishek     311 Sep 22 12:19 hard_link
 544884 -rw-rw-r-- 2 abhishek abhishek     311 Sep 22 12:19 line.txt
1181365 drwxrwxr-x 2 abhishek abhishek    4096 Oct 17 12:33 my_dir
 546419 -rw-rw-r-- 1 abhishek abhishek     106 Sep 27 20:39 redirects.json

删除硬链接与删除文件相同。

rm path_or_name_of_hard_link

删除链接文件怎么办?

我想不出您想在自动删除软链接的同时删除原始文件的情况。

好吧,您可以按照符号链接访问原始文件并使用它来删除文件。

rm "$(readlink '/path/to/link')" /path/to/link 

?如果你删除一个文件,保持软链接完整,链接会变成一个断开或悬空的链接。

结论

虽然存在 unlink 命令,但我建议使用 rm 命令删除符号链接。 您已经熟悉它并使用此命令删除文件。 也将它用于链接。 要记住的命令少了一个。