Linux 中的取消链接命令
如何在 Linux 终端中删除文件?使用 rm 命令。
人们通常都是这么做的。但在 Linux 中,可以使用另一个命令来删除文件和链接。
这个命令unlink
听起来好像只是在 Linux 中用于删除链接,但它也可以删除文件。
毕竟,Linux 中的删除过程基本上就是取消链接。删除文件时,Linux 内核会发现它对应于 inode 编号 X。它会从其目录列表中删除该文件条目,并将 inode X 的链接计数减 1。现在 inode X 的链接计数为 0,内核知道没有人链接到此inode,因此可以安全地删除 inode 并删除与其关联的数据块。
让我们看看如何使用 unlink 命令。
解除链接命令
unlink 命令用于删除文件和链接。您可以使用它来删除软链接和硬链接。
它是最简单的命令之一,除了--help
和之外没有其他选项--version
。
要使用取消链接删除文件,请按如下方式使用:
unlink filename
要删除链接:
unlink link_name
成功删除文件或链接后,您将看不到任何输出。
基本上,这就是 unlink 命令的全部功能。它不能执行任何其他操作。
不能一次删除多个文件或链接
虽然 rm 命令可以一次删除多个文件,但 unlink 每次只能删除一个文件。您不能一次将多个文件交给它。您也不能使用通配符模式。
如果您尝试这样的操作,它会引发错误并且不会删除任何文件。
abhishek@LHB:~/test$ unlink *.txt
unlink: extra operand ‘file2.txt’
Try 'unlink --help' for more information.
一次删除多个链接也是如此。
无法使用 unlink 删除目录
GNU 实现的 unlink 命令无法删除目录。如果您尝试删除文件夹,它会抛出错误。
abhishek@LHB:~$ unlink new_dir
unlink: cannot unlink 'new_dir': Is a directory
rm 和 unlink 命令之间的区别
unlink 命令使用 unlink 系统命令,而 rm 命令使用 unlinkat 系统调用。两个系统调用几乎相同。
这两个命令之间存在一些明显的区别,您已经可以看到这一点了。
unlink 命令每次只能处理一个文件或链接。rm 命令每次可以处理多个。
rm 命令可以使用递归选项删除目录。unlink 命令无法删除目录。
rm 命令会执行安全检查。如果您没有文件的写入权限,它会要求您以交互方式确认或使用强制选项-f
。使用 unlink 时,不会进行安全检查。它会删除受写保护的文件。
与 rm 命令不同,Unlink 没有附加功能或选项。
在某些情况下,您可能更喜欢使用 unlink 命令而不是 rm。假设您想要“强制删除”一个文件而不考虑写保护,但如果文件不存在,您希望脚本失败。如果文件不存在,rm -f 将不会显示任何错误,但 unlink 会抛出错误。