我在閱讀有關該file
命令的內容時發現了一些我不太明白的內容:
file 旨在確定正在查詢的文件類型.... file 透過執行來完成此操作三對相關文件進行一組測試:
- 檔案系統測試,
- 魔法測試,
- 語言測試
什麼是魔法測試?
答案1
這裡的「魔法」指的是「神奇的數字「:位於檔案中已知位置的特殊值,用於標識其類型。該file
命令有一個包含這些數字以及它們對應的類型的資料庫。與該資料庫一起使用的庫稱為libmagic,您可以從您自己的程式中存取它。
它們不一定是我們想像的「數字」。例如,PNG 映像檔始終以“\x89PNG\r\n\x1a\n”開頭,Java 類別以四個位元組(十六進位)CA FE BA BE 開頭,HTML 檔案在某處有“< html”臨近開始。它只是該類型檔案中已知的一些小資料序列,通常非常接近開頭。
當人們定義文件格式時,他們通常會故意包含其中一種文件格式,或者只是作為使格式適合在一起的一部分。file
之後可以使用它們。它還具有其他方法來實際查看文件的內容以猜測它是什麼(“語言測試”)。
答案2
這指的是許多檔案格式在檔案開頭的“魔術位元組”,它顯示了檔案的類型。
例如,如果一個檔案以 then 開頭#!
,則它被視為腳本。