Linux 上的文件 MIME 类型简介
介绍
MIME 类型是 Linux 文件管理的一个重要方面,因为它们使操作系统能够识别文件格式并确定打开文件的适当程序。了解 MIME 类型非常有用,尤其是在处理 Linux 系统上的各种文件格式时。本文概述了 MIME 类型,并解释了如何确定 Linux 上文件的 MIME 类型。它还引入了 xdg-mime 命令,这是一个用于在 Linux 上管理 MIME 类型的强大工具,允许用户更改与特定文件类型关联的默认应用程序或添加新的 MIME 类型。了解如何管理 MIME 类型可以提高工作效率并改善在 Linux 系统上处理文件时的整体用户体验。
Linux 中的不同 Mime 类型
在 Linux 中,MIME 类型(多用途 Internet 邮件扩展)用于根据文件内容识别文件类型,并将它们与相应的应用程序关联起来。以下是 Linux 中使用的一些最常见的 MIME 类型 -
text/plain - Plain text files
text/html - HTML files
application/pdf - PDF documents
image/jpeg - JPEG image files
image/png - PNG image files
video/mp4 - MP4 video files
audio/mp3 - MP3 audio files
application/zip - ZIP compressed archive files
application/json - JSON data files
application/xml - XML data files
您可以使用“file”命令后跟文件名来查看文件的 MIME 类型。例如,“file document.pdf”会将“document.pdf”文件的 MIME 类型显示为“application/pdf”。
了解 MIME 类型
尽管 MIME 类型是识别文件类型的标准方法,但它并不存储在 Linux 文件系统中的单个文件中。
有两种方法可以了解 mime 类型 -
按文件扩展名列出的 MIME 类型
按文件内容划分的 MIME 类型
按文件扩展名划分的 MIME 类型 - 确定 MIME 类型的一种方法是使用文件扩展名。但是,如果扩展名不正确或丢失,则此方法可能不正确。仅根据文件扩展名确定文件的 MIME 类型并不总是可靠的。
按文件内容划分的 MIME 类型 - 我们可以通过文件内容获取 MIME 类型。例如,JPG 图像文件具有独特的十六进制签名,例如 FF D9 和 FF D8。这种方法更好,但需要额外的 I/O 工作并且速度可能会更慢。
综上所述,要在Linux中准确确定文件的MIME类型,我们必须同时考虑文件扩展名和文件内容的具体特征。此方法可确保正确确定 MIME 类型,即使文件扩展名不正确或丢失也是如此。
使用 xdg-mime 命令发现文件的 MIME 类型
xdg-mime 实用程序利用共享 mime-info 数据库来识别 MIME 类型。最初,它尝试根据文件扩展名识别 MIME 类型。如果失败,它将继续分析文件的内容。
您可以使用 xdg-mime 命令获取 JPG 图像文件的 MIME 类型。这是一个例子 -
例子
# Query the MIME type of the JPG image file
xdg-mime query filetype example.jpg
输出
image/jpeg
输出表明文件 example.jpg 的 MIME 类型为 ‘image/jpeg’,这意味着该文件是 JPEG 图像文件。 xdg-mime 命令根据文件内容而不是文件扩展名确定 MIME 类型。在这种情况下,文件的内容表明它是 JPEG 图像文件,这就是命令返回“image/jpeg”的原因。
例子
让我们修改文件扩展名并观察 xdg-mime 命令的输出。
$ mv example.jpg example.zip
$ xdg-mime query filetype example.zip
输出
application/zip
因此,它显示了错误的 mime 类型,因为 xdg-mime 命令最初根据文件扩展名在数据库中搜索 MIME 类型。
例子
如果我们完全消除文件扩展名,让我们观察结果 -
$ mv example.zip example
$ xdg-mime query filetype example
输出
image/jpeg
当使用 xdg-mime 命令无法通过文件扩展名确定 MIME 类型时,它将根据文件内容搜索 MIME 类型。
文件命令
“file”命令通常包含在 FreeBSD 和 Linux 等免费操作系统中,并且可以与“--mime-type”选项一起使用来检索给定文件的 MIME 类型。
例子
$ file --mime-type example.jpg
输出
example.jpg: image/jpeg
让我们通过更改文件扩展名来测试“file”命令输出的准确性,并验证它是否仍然可以正确识别修改后的文件的 MIME 类型。
例子
$ mv example.jpg example.zip
$ file --mime-type example.zip
输出
example.zip: image/jpeg
即使文件扩展名发生更改,“file”命令仍然可靠,因为它不依赖扩展名来识别文件的 MIME 类型。相反,它会检查文件的实际内容来做出此决定。在这种情况下,这种方法使“文件”命令更加可靠。
我们消除了文件扩展名并依赖文件命令的持续准确性。
例子
$ mv example.zip example
$ file --mime-type example
输出
example: image/jpeg
我们知道,“file”命令不关注扩展名,它关注内容,这就是它显示相同输出的原因。
结论
Linux 使用 MIME 类型来解释文件,指示它们的格式以及如何显示或打开它们。 “file”命令可以轻松识别 MIME 类型。您可以为无法识别的文件格式注册自定义 MIME 类型,并且 MIME 类型在 Web 开发中对于在浏览器中正确显示网页至关重要。