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
-rw-rw-r-- 1 abhishek abhishek 4794657 Sep 27 20:36 export.json
-rw-rw-r-- 2 abhishek abhishek 311 Sep 22 12:19 hard_link
-rw-rw-r-- 2 abhishek abhishek 311 Sep 22 12:19 line.txt
drwxrwxr-x 2 abhishek abhishek 4096 Oct 17 12:33 my_dir
-rw-rw-r-- 1 abhishek abhishek 106 Sep 27 20:39 redirects.json
删除硬链接与删除文件相同:
rm path_or_name_of_hard_link