如何为文件分配(设置)MIME 类型?

PHP*_*ner 20 command-line file-format mime-type

是否有任何命令可以设置文件的 MIME 类型?例如:

mime --set --MIME="image/pjpeg" filename.jpg  
Run Code Online (Sandbox Code Playgroud)

C0d*_*lus 6

问题是已经回答通过@PHPLearner在注释中。但是,这里有一个更长的答案。

没有像问题中mime所问的那样特定的命令,毫无疑问可以创建一个这样的命令。要添加新的 MIME 类型,只需编辑/etc/mime.types文件即可。

假设您想添加带有扩展名的 MIME 类型.btc,然后

1.检查MIME类型是否已经存在

打开命令行并输入以下行(替换btc为您的扩展名)

grep 'btc' /etc/mime.types
Run Code Online (Sandbox Code Playgroud)

现在,此命令将输出一行,如果该 MIME 类型已添加。对于特定的 MIME 搜索,它看起来像这样

$ grep 'cpp' /etc/mime.types
text/x-c++src                        c++ cpp cxx cc

$ grep 'py' /etc/mime.types
application/x-python-code                       pyc pyo
text/vnd.debian.copyright
text/x-python                                   py 

$ grep 'btc' /etc/mime.types
Run Code Online (Sandbox Code Playgroud)

如果您的扩展不输出任何行(如btc本例),或者如果输出的行不包含您的扩展,您必须创建一个新的 MIME 类型。否则,您的扩展名已包含在文件中的 MIME 类型/etc/mime.types

2.1 创建 MIME 类型(如果需要)

如果没有输出,或者给出的输出不包括您的扩展名,我们必须添加一个 MIME 类型。对于命令行中的该类型

gksudo gedit /etc/mime.types
Run Code Online (Sandbox Code Playgroud)

修改以下文本,将“扩展名”一词替换为您的文件扩展名(无句号),在mime.types文件末尾添加该行,然后保存。这里我们的扩展名是比特币,我们编写btc(不是 .btc)将被视为比特币文件的扩展名。

text/extension                   extension
Run Code Online (Sandbox Code Playgroud)

并复制修改后的“文本/扩展名”部分。

在我们的例子中,它看起来像

text/bitcoin-text                btc
Run Code Online (Sandbox Code Playgroud)

保存文件并退出。

2.2 使用.xml文件和添加 MIME 类型update-mime-database

如果编辑/etc/mime.types文件不适用于您的扩展程序,那么您可以尝试此解决方法。

创建一个.xml像这样描述您的扩展程序的新文件并保存它。

<?xml version="1.0" encoding="utf-8"?>
<mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="text/bitcoin-text">
<glob pattern="*.btc"/>
</mime-type>
Run Code Online (Sandbox Code Playgroud)

现在将此文件添加到/usr/share/mime/packages文件夹(ref)中。添加或修改您需要的任何内容后,运行命令

sudo update-mime-database /usr/share/mime
Run Code Online (Sandbox Code Playgroud)

3. 为 MIME 类型添加图标

现在我们需要将图标与 MIME 类型相关联。获取一个 SVG 图标并将其命名为“text-extension.svg”,或者任何您修改后的 MIME 类型的名称;这将是代表系统上 MIME 类型的所有实例的图标。

所以,这样它匹配我们重命名.svg文件比特币-text.svg(或“insertYourMIMEtype.svg”),以便slashes are replaced with "-" 和有no capital letters

然后只需运行以下命令,将“bitcoin-text”替换为您的 MIME 类型。

 sudo cp bitcoin-text.svg /usr/share/icons/gnome/scalable/mimetypes
 sudo gtk-update-icon-cache /usr/share/icons/gnome/ -f
Run Code Online (Sandbox Code Playgroud)

重新登录和所有以 MIME 扩展名结尾的文件都将显示该图标。

  • 您实际上需要将 xml 文件添加到 /usr/share/mime/packages,如果您在运行 update-mime-database 时将其添加到 /usr/share/mime/application 它将被清除 (5认同)