我正在使用 Ubuntu。我正在尝试将 ruby gem 'shared-mime-info' 用于我正在编写的应用程序。
据我所知,magic.mgc 是魔术文件的编译版本,它具有针对不同文件类型的魔术数字定义。
但是我不明白为什么 /usr/share/mime/magic 是二进制格式,而不是像我在互联网上找到的其他地方引用此文件时那样,只是普通的文本文件,其中每个参数都用空格分隔?
/usr/share/mime/magic 在文件开头有单词 'MIME-Magic',并优先考虑其余内容。所以它看起来根本不像 magic.mgc。
[100:application/vnd.scribus]
>1=^@^KSCRIBUSUTF8
[90:application/vnd.stardivision.writer]
>2089=^@
shared-mime-info 似乎想要一个如上所述的二进制非编译格式的魔术文件,我想为 DOCX 添加定义,但如何在不使用十六进制编辑器的情况下更新或生成此文件?
我找到了以下魔术文件的参考: http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html
它提到这个文件是使用 update-mime-database 更新的,但如果我只想向其中添加一些新条目,该怎么办?十六进制编辑器?
无论如何,我最终使用 hexer 在 ~/.local/share/mime/ 中创建了一个新的 magic 文件,其中只有我想要添加的条目和 MIME-Magic 标头。似乎有效(假设我现在会处理 docx)。
00000000: 4d 49 4d 45 2d 4d 61 67 69 63 00 0a 5b 36 30 3a MIME-Magic..[60:
00000010: 61 70 70 6c 69 63 61 74 69 6f 6e 2f 76 6e 64 2e application/vnd.
00000020: 6f 70 65 6e 78 6d 6c 66 6f 72 6d 61 74 73 2d 6f openxmlformats-o
00000030: 66 66 69 63 65 64 6f 63 75 6d 65 6e 74 2e 77 6f fficedocument.wo
00000040: 72 64 70 72 6f 63 65 73 73 69 6e 67 6d 6c 2e 64 rdprocessingml.d
00000050: 6f 63 75 6d 65 6e 74 5d 0a 3e 30 3d 00 08 50 4b ocument].>0=..PK
00000060: 03 04 14 00 06 00 0a -- -- -- -- -- -- -- -- -- .......---------