当一个人写一个html文件时,linux可以声明MIME类型是text/html。这是如何处理的? “识别器”存储在哪里?如何使用已实现的识别器添加 MIME 类型?
答案1
通常有两个库可以处理这个问题。这共享 mime 信息图书馆是最大的图书馆。然而也有文件提供“libmagic”的实用程序。
其中每个都维护自己的数据库。然而,shared-mime-info 更为常见,并且被设计为可扩展的。
至于如何添加条目,我的系统上的位置是/usr/share/mime
,尽管它可能因发行版而异。基本上,您只需在其中添加一个 xml 文件,该文件解释如何识别您的文件格式(在我的系统上,包将其文件放在/usr/share/mime/packages
)。
添加 xml 文件后,使用update-mime-database
命令重新生成缓存。
(shared-mime-info 项目网站上有一个很好的教程:http://freedesktop.org/wiki/Specifications/AddingMIMETutor/)
他们的示例文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="image/png">
<comment xml:lang="en">PNG image</comment>
<comment xml:lang="af">png beeld</comment>
...
<magic priority="50">
<match type="string" value="\x89PNG" offset="0"/>
</magic>
<glob pattern="*.png"/>
</mime-type>
</mime-info>
一般资源(例如 xml 文件的完整规范)也最好从项目站点获取:http://freedesktop.org/wiki/Specifications/shared-mime-info-spec/