首页 file命令是如何工作的?
文章
取消

file命令是如何工作的?

file命令通过如下三个步骤判断文件类型。

检查文件系统(filesystem tests)

先通过stat(2)查看是否为本系统通用的类型(如目录),头文件<sys/stat.h>中保存有相关定义。

检查魔数(magic tests)

许多类型的文件开头是特定的魔数,魔数和文件的对应关系通常会记录在/etc/magic或/usr/share/misc/magic。

检查语言类型(language tests)

最后file会通过检查文件首部是否含有特定字符串来判断语言类型。

例如如果存在 .br 关键字,那么该文件很可能是troff(1)输入文件,而有关键字 struct 则该文件可能是C语言程序源码。

可以看出,这样的判断方式是不准确,本步骤的检测相对之前两步更不可靠(也正因如此,本步骤最后执行)。

本步骤也会检测一些杂项类型,例如tar(1)归档文件、JSON文件等。

参考

本文由作者按照 CC BY 4.0 进行授权