Linux 中的取消链接命令
了解 unlink 命令,这是在 Linux 终端中删除文件的另一种方法。
如何在Linux终端中删除文件?您使用 rm 命令。
人们通常就是这样做的。但在 Linux 中可以使用另一个命令来删除文件和链接。
该命令称为 unlink
,虽然听起来像是只在 Linux 中删除链接,但它也可以删除文件。
毕竟Linux中的删除过程基本上就是取消链接。当你删除一个文件时,Linux内核发现它对应于索引节点号X。它会从其目录列表中删除该文件条目,并将索引节点X的链接计数减1。现在索引节点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 删除目录
unlink 命令的 GNU 实现无法删除目录。如果您尝试删除文件夹,它会引发错误。
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
。使用取消链接时,没有安全检查。它将删除写保护的文件。
与 rm 命令不同,Unlink 没有附加功能或选项。
在某些用例中,您可能更喜欢使用 unlink 命令而不是 rm。想象一下,您想要“强制删除”一个文件,而不考虑写保护,但如果该文件不存在,您希望脚本失败。如果文件不存在, rm -f 将不会显示任何错误,但取消链接将引发错误。