如何在 Linux 系统中删除软链接
介绍
在 Linux 中,符号链接(symbolic link,或者 symlink)也称为软链接,是一种特殊类型的文件,用作指向另一个文件的快捷方式。
使用方法
我们可以使用 ln
命令来创建软连接,那么怎样删除呢?
Linux 中没有用于删除符号链接的特殊命令,不过可以使用 rm
命令,该命令主要用于删除文件和目录,如下:
rm [file|dir]
当然也可以使用 unlink
命令,但是不要直接使用软链接的名称,因为它不仅仅用于删除链接,还会删除文件。
unlink [file]
注意
unlink 命令只能删除文件,而不能删除目录
下面我们来详细看一下。
- 使用 ln 命令创建符号链接
ln <-s|-f> [symlink_origin_file|symlink_origin_dir] [symlink_target_file|symlink_target_dir]
- 使用 rm 命令删除符号链接
在 rm 命令后面提供链接路径的名称:
rm [symlink_file|symlink_dir]
我们来看个具体例子,如下命令中列出当前路径中的文件:
ls -l
参考示例
上述列表中 my_link.txt
为符号链接,大家可以看到其是以 l
(表示链接)开头,名称显示它指向的文件。
我们使用 rm
删除它,并验证:
rm my_link.txt
ls -l
参考示例
如下图所示,以这种方式删除软链接,但源文件仍然存在:
- 删除多个链接
可以使用 rm
命令一次删除多个符号链接:
rm [symlink1 symlink2 ... symlink3]
- 使用 unlink 命令删除软链接
删除软链接的另一种方法是使用 unlink
命令。这个命令听起来好像只用于删除链接,但其实它也可以删除文件。使用方式如下:
unlink [symlink_file|symlink_dir]
我们使用上面的例子,如下图所示:
注意
unlink 命令不能一次删除多个链接。
- 删除指向目录的软链接
我们可以创建指向文件的软连接,也可以创建指向目录的软链接。删除目录需要使用 -r
选项,但是删除指向目录的链接却不需要使用 -r
选项。
使用方法与删除文件链接的方法相同:
rm [symlink_file|symlink_dir]
删除指向目录的软连接的时候,在目录的末尾不要添加斜杠,否则会报错:
rm [symlink_dir/]
# rm: 无法删除"symlink_dir/": 是一个目录
下图是一个删除目录软链接的示例:
注意
尽量不要使用-f
选项强制删除指向目录的链接,因为它会删除目录的内容。
- 删除硬链接
与软链接不同,硬链接与原始文件几乎无法区分,你只能通过 inode number
注意到它。
看下面的例子:
$ ls -li
# total 4716
# 544057 -rw-rw-r-- 1 root staff 4794657 Sep 27 20:36 my_hard_link.txt
删除硬链接与删除文件相同:
rm [symlink_file|symlink_dir]
- 同时删除链接文件和源文件
实际上,几乎没有在删除软链接的同时,也要删除原始文件的场景和需求。当然,如果有的话,你可以通过符号链接找到原始文件,然后删除它。
rm "$(readlink '/path/to/symlink')" /path/to/symlink
注意
如果删除源文件,但是没有删除软链接,那么这个链接将会成为断开的或悬空的链接。
结尾
虽然存在 unlink
命令,但是我建议使用 rm
命令来删除符号链接。因为这个是我们都比较熟悉的命令,经常使用它来删除文件,当然也可以用来删除符号链接。