Linux 系统中如何删除软连接

系统 Linux
在Linux中,符号链接(symbolic link,或者symlink)也称为软链接,是一种特殊类型的文件,用作指向另一个文件的快捷方式。

我们可以使用 ln 命令来创建软连接,那么怎样删除呢?

Linux 中没有用于删除符号链接的特殊命令,不过可以使用 rm 命令,该命令主要用于删除文件和目录,如下:

rm symbolic_link_name

当然也可以使用 unlink 命令,但是不要直接使用软链接的名称,因为它不仅仅用于删除链接,还会删除文件。

unlink symbolic_link_name

下面我们来详细看一下。

使用 rm 命令删除符号链接

在 rm 命令后面提供链接路径的名称:

rm name_or_path_of_link

我们来看个具体例子,如下命令中列出当前路径中的文件:

$ 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 (表示链接)开头,名称显示它指向的文件。

我们使用 rm 删除它,并验证:

$ rm mylink  
$ 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
-rw-r--r-- 1 abhishek abhishek 12817 Sep 22 12:28 sample.txt

如下图所示,源文件仍然存在:

删除多个链接

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

rm symlink1 symlink2 symlink3

使用 unlink 命令删除软链接

删除软链接的另一种方法是使用 unlink 命令。这个命令乍听起来好像只用于删除链接,但其实它也可以删除文件。使用方式如下:

unlink name_or_path_of_link

我们使用上面的例子,如下图所示:

unlink 不能一次删除多个链接。

删除指向目录的软链接

我们可以创建指向文件的软连接,也可以创建指向目录的软链接。删除目录需要使用 -r 选项,但是删除指向目录的链接却不需要使用 -r 选项。

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

rm name_or_path_to_link_to_dir

删除指向目录的软连接的时候,在目录的末尾不要添加斜杠,否则会报错:

$ rm link_to_dir/
rm: cannot remove 'link_to_dir/': Is a directory

下图是一个删除目录软链接的示例:

注意,尽量不要使用 -f 选项强制删除指向目录的链接,因为它会删除目录的内容。如下图所示:

删除硬链接

与软链接不同,硬链接与原始文件几乎无法区分,你只能通过 inode number 注意到它。

看下面的例子:

$ 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 命令来删除符号链接。因为这个是我们都比较熟悉的命令,经常使用它来删除文件,当然也可以用来删除符号链接。

以上就是本次分享全部内容

责任编辑:庞桂玉 来源: TIAP
相关推荐

2021-04-30 13:19:20

Linux删除分区

2019-03-18 09:40:44

Linux命令编程语言

2020-09-18 17:29:58

Linux

2013-06-05 11:41:53

2009-12-03 16:40:30

ADSL软路由

2012-05-15 13:55:18

Linux备份

2022-11-11 07:48:56

ORM链式轮播图

2022-11-15 07:50:47

ORM链式操作删除

2019-09-26 06:50:16

Linux命令回车字符

2021-08-09 11:31:54

Linux重复相片删除

2022-08-30 10:33:08

LinuxUSB系统

2018-04-27 10:33:56

Linux命令chattr

2010-01-14 09:52:27

linux文件系统

2021-10-22 09:42:13

Linux恢复文件

2014-02-12 14:54:26

userdelLinux系统

2020-04-03 13:45:16

删除Linux垃圾文件

2019-12-23 09:42:19

Linux输入emoji

2022-10-14 12:07:04

LinuxIP

2022-03-28 19:53:24

Linux恢复文件意外删除文件

2019-06-21 10:52:28

软连接硬链接Linux
点赞
收藏

51CTO技术栈公众号