File-Format

file(1) 和 magic(5) :描述其他格式

  • March 9, 2019

我可以使用fileand magic( http://linux.die.net/man/5/magic ) 來覆蓋其他一些已知格式的描述嗎?

例如,我想描述以下格式:

那是“只是”文本文件

或者

那是“只是”一個以幻數開頭的壓縮文件BAM\1

?

你知道任何例子嗎?

是否可以提供自定義 C 程式碼來測試文件而不是使用魔法格式?

您可以使用該-m選項來指定魔術文件的備用列表,如果您/usr/share/file/magic.mgc在該列表中的已編譯魔術文件(在我的系統上)之前包含您自己的,則這些模式將在“全域”之前測試。您可以創建一個函式或別名,以透明地始終透明地使用該選項,只需發出file命令即可。

魔術文件中使用的語言非常強大,因此很少需要恢復到自定義 C 編碼。唯一一次我傾向於這樣做是在 90 年代,當時匹配 HTML 和 XML 文件很困難,因為(當時)沒有辦法擁有能夠解析和使用一種模式所需的靈活大小寫<HTML和偏移< Html匹配< html. 我在 C 中將其實現為“字元串”模式的修飾符,允許忽略大小寫和壓縮(可選)空白

C 語言中的這些更改也需要修改魔法文件。除非file原始碼從那時起發生了重大變化,否則您將始終需要修改(或提供額外)magic文件中與這些 C 程式碼更改相匹配的規則。因此,您不妨開始嘗試僅更改魔術文件,如果確實行不通,則退回到更改 C 程式碼。

引用自:https://unix.stackexchange.com/questions/154001