我知道要添加模仿类型我必须使用这样的代码:
<mime-type type="audio/x-gtp">
<comment>GuitarPro file</comment>
<glob pattern="*.gp5"/>
</mime-type>
我知道要添加模仿类型其文件扩展名用于其他模仿类型我可以用魔法像那样:
<mime-type type="audio/x-gtp">
<magic priority="50">
<match value="BCFZ" type="string" offset="0" />
</magic>
<glob pattern="*.gpx"/>
</mime-type>
考虑到文件的前 4 个字符是可打印的,我使用以下方法获得了此模式:xxd。我给你们看xxd输出:
xxd '/home/cactus/Descargas/Billie Eilish - Everything I Wanted.gpx' | head -n 4
00000000: 4243 465a 0420 0500 6848 68cd 4c00 0180 BCFZ. ..hHh.L...
00000010: 0000 4ed7 fdff feff ffff e76d 156a 52d8 ..N........m.jR.
00000020: 516e 142e 0141 7201 00e4 0201 c804 0390 Qn...Ar.........
00000030: 0807 2010 0e40 201c 8040 3900 8072 0100 .. ..@ [email protected]..
到目前为止,一切运行良好。
其他文件类型的问题.gp,其第一个字符不是不可侵犯的,我向您展示了前四个 xdd 行的输出:
xxd /home/cactus/Descargas/arpeggio.gp | head -n 4
00000000: 504b 0304 1400 0000 0000 0000 0000 0000 PK..............
00000010: 0000 0000 0000 0000 0000 0800 0000 436f ..............Co
00000020: 6e74 656e 742f 504b 0304 1400 0800 0800 ntent/PK........
00000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................
所以我不知道如何使用魔法对于这种类型的文件,我认为最好的方法是使用十六进制代码价值,但我不知道如何使用它。
谢谢你的时间。
答案1
我能够解决这个问题。
在该页面中https://specifications.freedesktop.org/shared-mime-info-spec/latest/ar01s02.html#idm45785599133248我找到了以下定义:
价值: 与文件内容进行比较的值,格式由 type 属性指定。字符串类型支持 C 字符转义(\0、\t、\n、\r、\xAB(十六进制)、\777(八进制)。
这表明了我所需要的,因此您可以使用 C 字符转义在字符串类型中使用十六进制值。
记住我的文件的十六进制输出:
hexdump -C /home/cactus/Descargas/arpeggio.gp | head -4
00000000 50 4b 03 04 14 00 00 00 00 00 00 00 00 00 00 00 |PK..............|
00000010 00 00 00 00 00 00 00 00 00 00 08 00 00 00 43 6f |..............Co|
00000020 6e 74 65 6e 74 2f 50 4b 03 04 14 00 08 00 08 00 |ntent/PK........|
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
模式看起来会像这样:\x40\x4b\x03\x04
。这不起作用。但我改变了优先事项值100最终成功了。最终代码如下:
<mime-type type="audio/x-gtp">
<magic priority="100">
<match value="\x50\x4b\x03\x04" type="string" offset="0" />
</magic>
<comment>GuitarPro file</comment>
<comment xml:lang="es">Archivo de GuitarPro</comment>
<glob pattern="*.gp"/>
</mime-type>
最后终于成功了!