如何在Linux中删除软链接和硬链接?

我们都知道在 Linux 中删除文件用的是 rm 命令。

还有另一个命令可用于在 Linux 中删除文件和链接:unlink,虽然它听起来像是仅用于在 Linux 中删除链接,但它也可以删除文件。

当你删除一个文件时,Linux内核发现它对应于inode number X,它会从它的目录列表中删除文件条目并将inode X的链接计数减少1。现在inode X的链接计数为0,内核知道没有人链接到这个inode,所以删除这个 inode 并删除与之关联的数据块是安全的。

让我们看看如何使用 unlink 命令。

unlink命令

unlink 命令用于删除文件和链接,您可以使用它来删除软链接和硬链接。

–help它是最简单的参数之一。

要删除带有取消链接的文件,可以这样使用它:

unlink filename

要删除链接:

unlink link_name

成功删除文件或链接后,您将看不到任何输出。

基本上,这就是 unlink 命令的内容,它不能做任何其他事情。

不能一次删除多个文件或链接

虽然 rm 命令可以一次删除多个文件,但 unlink 一次只能删除一个文件。您一次不能给它多个文件,您也不能使用通配模式。

如果您尝试类似的操作,它会引发错误并且不会删除任何文件。

root@bunian:~/test$ unlink *.txt
unlink: extra operand ‘file2.txt’
Try 'unlink --help' for more information.

一次删除多个链接也是如此。

无法使用unlink删除目录

unlink 命令的 GNU 实现不能删除目录,如果您尝试删除文件夹,则会引发错误。

root@bunian:~$ unlink new_dir
unlink: cannot unlink 'new_dir': Is a directory

rm 和 unlink 命令的区别

unlink 命令使用 unlink 系统命令,而 rm 命令使用 unlinkat 系统调用,两个系统调用几乎相同。

这两个命令之间有一些明显的区别,您已经可以看到了。

unlink 命令一次只处理一个文件或链接。rm 命令一次可以处理多个。

rm 命令可以使用递归选项删除目录。unlink 命令不能删除目录。

rm 命令执行安全检查,如果您没有文件的写入权限,它会要求您以交互方式确认它或使用 force 选项-f。

unlink,没有安全检查,它将删除写保护的文件。

与 rm 命令不同,Unlink 没有额外的功能或选项。

在某些用例中,您可能更喜欢使用 unlink 命令而不是 rm,想象一下,您想“强制删除”一个文件而不考虑写保护,但如果文件不存在,您希望脚本失败。如果文件不存在,则 rm -f 不会显示任何错误,但 unlink 会引发错误。

© 版权声明
THE END