我想定义一个根据文件名打开文件的应用程序。
例如,我想要一个名为Gemfile
或 的文件Dockerfile
用 sublime 或atom 打开。
我知道我可以使用 mime 类型,但对于这两个文件来说,它都是text/plain
.
或者有哑剧类型吗Gemfile
?
答案1
基于文件名的匹配是定义 mimetype 的最简单方法之一。 Gemfiles 或 Dockerfiles 没有官方的 mimetype,但是看一下/usr/share/mime/packages/
,您会发现许多非官方的 mimetypes 具有<sub-class-of type="text/plain"/>
并且通常命名为text/x-*
,例如text/x-python
或text/x-markdown
。
添加自定义 mimetypes 通常很简单,特别是在我们可以只使用文件名的情况下。
正如您观察到的当前 mimetypeDockerfile
和Gemfile
都是text/plain
:
$ xdg-mime query filetype Dockerfile
text/plain
$ xdg-mime query filetype Gemfile
text/plain
我们将为名为 或 的text/x-dockerfile
文件创建一个新的 mimetype ,并为名为 的文件创建一个新的 mimetype 。为此,请创建一个以以下内容命名的 XML 文件:Dockerfile
*.dockerfile
text/x-gemfile
Gemfile
x-dockerfile.xml
<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="text/x-dockerfile">
<comment>Dockerfile</comment>
<sub-class-of type="text/plain"/>
<glob pattern="Dockerfile"/>
<glob pattern="*.dockerfile"/>
</mime-type>
</mime-info>
以及另一个x-gemfile.xml
以这些内容命名的文件:
<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="text/x-gemfile">
<comment>Gemfile</comment>
<sub-class-of type="text/plain"/>
<glob pattern="Gemfile"/>
</mime-type>
</mime-info>
接下来,安装 mimetypes。对于本地用户,运行以下命令:
xdg-mime install --mode user x-dockerfile.xml
xdg-mime install --mode user x-gemfile.xml
update-mime-database ~/.local/share/mime
要在系统范围内安装,请运行以下命令:
xdg-mime install --mode system x-dockerfile.xml
xdg-mime install --mode system x-gemfile.xml
update-mime-database /usr/share/mime
观察到检测到的 mimetype 现在已更改。
$ xdg-mime query filetype Dockerfile
text/x-dockerfile
$ xdg-mime query filetype Gemfile
text/x-gemfile
现在您可以将它们分配给您喜欢的任何文本编辑器。