Terminology
file 命令的“魔術測試”是什麼意思?
我正在閱讀有關該
file
命令的內容,但遇到了一些我不太理解的內容:file 旨在確定被查詢的文件的類型…. file 通過對相關文件執行三組測試來完成此操作:
- 文件系統測試,
- 魔法測試,
- 語言測試
什麼是魔法測試?
那是指許多文件格式在文件開頭的“魔術字節”,它顯示了這是什麼類型的文件。
例如,如果一個文件以 then 開頭,
#!
那麼它就被認為是一個腳本。
這裡的“magic”指的是“ magic numbers ”:一個特殊值,位於文件中的已知位置,用於標識其類型。該
file
命令具有這些數字的數據庫以及它們對應的類型。該數據庫附帶的庫稱為libmagic,您可以從自己的程序中訪問它。它們不一定是我們想像中的“數字”。例如,PNG 圖像文件總是以“\x89PNG\r\n\x1a\n”開頭,Java 類以四個字節(十六進制)CA FE BA BE 開頭,HTML 文件在某處有“< html”靠近起點。它只是已知位於該類型文件中的一些小數據序列,通常非常接近開始。
當人們定義文件格式時,他們通常會有意或僅將其中一種格式包含在其中,以使格式適合在一起。
file
之後可以使用它們。它還有其他方法可以實際查看文件的內容以猜測它是什麼(“語言測試”)。