良许Linux教程网 干货合集 你会使用 unlink 删除文件吗?

你会使用 unlink 删除文件吗?

Linux系统中,我们通常使用rm命令来删除文件。但除此之外,还有一个命令可以用来删除文件和链接,那就是unlink命令。尽管它的名字听起来像是只能删除链接,但实际上它也可以用来删除文件。

Linux系统中,删除文件的过程非常快速。当您删除一个文件时,Linux内核会找到它对应的索引节点编号X,并从目录列表中删除该文件条目。同时,系统会将索引节点X的链接计数减少1。如果此时索引节点X的链接计数变为0,内核会认为没有任何人链接到该索引节点,因此可以安全地删除该索引节点以及与其关联的数据块。

接下来,让我们了解一下如何使用unlink命令。

unlink 命令

如前文所述,unlink 命令用于删除文件和链接,其中链接包括软链接和硬链接。它是最简单的命令之一,除了 –help 以及 –version 以外,没有任何其他选项。

使用 unlink 删除文件,可以这样:

unlink filename

删除链接,可以这样使用:

unlink link_name

删除成功后,不会有任何输出:

这就是 unlink 命令的功能,除此以外不做任何其他事情。

unlink 不能同时删除多个文件和链接

rm 命令可以一次删除多个文件。但是 unlink 却不能,它一次只能删除一个文件或者链接,而且,也不能使用全局模式(globbing patterns)。

如果我们尝试给定多个文件的话,它会抛出一个错误,执行失败:

[gliu@fedora ~]$ unlink *.txt
unlink: extra operand ‘file2.txt’
Try 'unlink --help' for more information.

同时删除多个链接也会如此。

使用 unlink 不能删除目录

GNU 实现下的 unlink 命令是无法删除目录的,如果给定的文件名称是一个目录,就会报错:

[gliu@fedora ~]$ unlink new_dir
unlink: cannot unlink 'new_dir': Is a directory

rm 和 unlink 的区别

unlink 命令使用 unlink 系统命令,而 rm 命令使用 unlinkat 系统调用,两个系统调用几乎相同。但是这两个命令之间还是有一些明显的差异。

如前文所述,unlink 命令在同一时间只能删除一个文件或链接,而 rm 命令可以删除多个;unlink 命令不能删除目录,而 rm 命令能删除目录

rm 命令在执行的时候,首先会安全检查,如果你没有文件的写权限,那么系统会要求你给出写权限(sudo或者切换至管理员用户),或者使用强制删除选项 -f;而 unlink 则不会进行安全检查,直接删除文件。

image-20230703221854683
image-20230703221854683

另外,与 rm 不同,unlink 没有其他选项。

在某些情况下,相比于 rm,你可能更喜欢使用 unlink。比如你希望强制删除一个文件,而不考虑安全或者权限问题;或者如果删除失败(比如文件不存在)的话你希望能看到报错信息,这种情况下就可以使用 unlink。因为使用 rm -f 强制删除文件,如果文件不存在的话,不会显示任何错误信息。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部