Text
如何為文本格式修復 xdg-mime
我
xdg-mime
犯了錯誤。它將包含 Java 程式碼的 .html 文件辨識為 C++ 文件。我不太了解 xdg 的內部機制(例如它如何確定文件類型)。我想知道如何通過優先考慮文件副檔名來解決這個問題。
當然也歡迎其他解決方案。並且更歡迎對 xdg-* 機制的解釋。
xdg-mime 是稱為 xdg-utils 的腳本集合的一部分,“一組桌面環境 (DE) 的通用介面”。在您的特殊情況下,我將在此處引用MestreLion的評論:
如果您沒有任何桌面環境,則不應使用 xdg-mime (或任何其他 xdg 工具)。xdg 旨在提供 不同桌面環境之間的互操作性,但不是在沒有桌面環境時。 將 xdg 視為與桌面無關,但不是“桌面無神論者”
至於 xdg-utils 的內部機制……它們只是檢查 DE 的 shell 腳本,如果找到,則呼叫該特定 DE 的文件工具來執行特定任務。在 GNOME中, xdg-open呼叫gvfs-open和xdg-mime呼叫gvfs-info(這兩個 gvfs-* 工具都優先通過文件副檔名進行判斷)。在您的情況下,沒有找到 DE,因此xdg-mime回退到
file
$$ 1 $$獲取有關文件內容類型的資訊。這是 xdg-mime 中“通用”DE(或者更確切地說是未知)的程式碼部分:
info_generic() { DEBUG 1 "Running file -i \"$1\"" /usr/bin/file -i "$1" 2> /dev/null | cut -d ":" -f 2 | sed s/"^ "// if [ $? -eq 0 ]; then exit_success else exit_failure_operation_failed fi }
雖然這是真的
file
$$ 1 $$結果並不總是100%準確,對此您無能為力(它仍然是IMO這項工作的最佳工具)。但是,如果您只想根據文件副檔名(例如 windows)來確定 mime 類型,您可以編寫自己的腳本。這是一個簡單的python範例:
#!/usr/bin/python2 import os import sys import mimetypes if len(sys.argv) != 2: print ("Usage: ./pymime filename") raise SystemExit testfile = os.path.abspath(sys.argv[1]) mt = mimetypes.guess_type(testfile, strict=True)[0] print ("%s" % mt) sys.exit(0)
將其命名為pymime並執行:
./pymime yourfile