在Linux中删除文件,我们通常使用rm命令。此外,还有一个命令可以用来删除文件和链接,这就是unlink命令。虽然在Linux系统中听上去只能删除链接,但实际上也可以删除文件。Linux系统删除文件的过程非常快,一瞬间。当你删除一个文件时,Linux内核发现它对应的inode号为X,系统从目录列表中删除该文件条目,并将inodeX的链接计数减1。此时,inodeX的链接计数为0,内核会认为没有人链接到这个索引节点,因此可以安全地删除索引节点,并删除与其关联的数据块。现在让我们看看如何使用unlink命令。unlink命令前面提到unlink命令用于删除文件和链接,其中链接包括软链接和硬链接。它是最简单的命令之一,除了--help和--version之外没有任何选项。使用unlink删除一个文件,可以这样使用:unlinkfilename删除一个链接,可以这样使用:unlinklink_name删除成功后,不会有输出:这是unlink命令的作用,和它不做任何其他事情。unlink不能同时删除多个文件,而linkrm命令可以一次删除多个文件。但是unlink不行,它一次只能删除一个文件或链接,而且不能使用全局模式(globbingpatterns)。如果我们尝试提供多个文件,它会抛出错误并失败:[gliu@fedora~]$unlink*.txtunlink:extraoperand'file2.txt'尝试'unlink--help'以获得更多信息。同时删除多个链接也是如此。取消链接不能删除目录。GNU实现的unlink命令不能删除目录。如果给定的文件名是目录,会报错:[gliu@fedora~]$unlinknew_dirunlink:cannotunlink'new_dir':Isadirectoryrmunlink和unlink的区别unlink命令使用unlink系统命令,而rm命令使用unlinkat系统调用。这两个系统调用几乎是一样的。但是这两个命令之间仍然存在一些明显的差异。前面提到,unlink命令一次只能删除一个文件或链接,而rm命令可以删除多个文件;unlink命令不能删除目录,rm命令可以删除目录。rm命令执行时,会先进行安全检查。如果你对该文件没有写权限,系统会要求你给写权限(sudo或者切换到管理员用户),或者使用强制删除选项-f;andunlink不做安全检查,直接删除文件。此外,与rm不同,unlink没有其他选项。在某些情况下,您可能更喜欢使用unlink而不是rm。例如,如果你想强行删除一个文件,不管安全或权限问题;或者如果删除失败(例如,文件不存在),您希望看到一条错误消息。在这种情况下,您可以使用取消链接。由于使用rm-f强制删除文件,所以如果文件不存在则不会显示错误信息。
