如何在 Linux 中删除软链接
Linux 中的符号链接(也称为软链接或符号链接)是一种特殊类型的文件,可作为另一个文件的快捷方式。
您可以使用 ln 命令创建软链接。但是如何删除它们呢?
Linux 中没有专门用于删除符号链接的命令。您可以使用rm 命令,该命令也用于删除文件和目录。
rm symbolic_link_name
您也可以在此处使用取消链接命令。不要只看其名称。它不仅可以删除链接;它还可以删除文件。
unlink symbolic_link_name
我们来详细看一下。
使用 rm 命令删除符号链接
您所要做的就是将链接路径的名称提供给命令:
rm name_or_path_of_link
我们来看一个例子。你能在 ls 命令的长列表输出中识别出软链接吗?
abhishek@LHB:~/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
(表示链接)开头,并且名称显示它指向的文件。
我来删除链接验证一下:
abhishek@LHB:~/test$ rm mylink
abhishek@LHB:~/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 命令。听起来这个命令只用于删除链接,但它也可以删除文件。
要使用取消链接删除链接,请按如下方式使用。
unlink name_or_path_of_link
我将使用之前用过的相同示例。
取消链接命令非常有限。您无法用它一次删除多个链接。
删除目录的软链接
您可以创建指向文件和目录的软链接。虽然您必须使用 -r 选项删除目录,但指向目录的链接不需要这样做。
使用方法与删除文件链接相同:
rm name_or_path_to_link_to_dir
不要在链接中使用尾部斜杠,否则会出现错误。
abhishek@LHB:~/test$ rm link_to_dir/
rm: cannot remove 'link_to_dir/': Is a directory
这是删除目录软链接的示例。
rm -f
因为这将删除目录的内容。删除硬链接
与软链接不同,硬链接与原始文件几乎没有区别。您只能通过inode编号来注意到它。
你能在输出中识别出硬链接和文件吗?注意 inode 编号。
abhishek@LHB:~/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 命令来删除符号链接。您已经熟悉它并使用此命令来删除文件。也可以使用它来删除链接。这是一个需要记住的命令。