私のものもxdg-mime
間違いをする。 Javaコードを含む.htmlファイルをC ++ファイルとして認識します。
私はxdgの内部構造(ファイルの種類を決定する方法など)をよく理解していません。まず、ファイル拡張子と判断してこの問題を解決する方法を知りたいです。
もちろん、他のソリューションも歓迎します。 xdg-*メカニズムの説明を歓迎します。
ベストアンサー1
xdg-mimeは、「デスクトップ環境(DE)への共通インタフェースセット」であるxdg-utilsというスクリプトの集まりの一部です。あなたの具体的な場合は引用します。巨匠コメントここ:
デスクトップ環境がない場合は、xdg-mimeを使用しないでください。 (または他のxdgツール)。 xdgは相互運用性を提供することを目的としています。 異なるデスクトップ環境の間(1つなければ不可能) xdgはデスクトップに拘束されないと見なされますが、「デスクトップ無神論者」ではありません。
xdg-utilsの内部について... DEのシェルスクリプトをチェックし、見つかったら、特定のDEのファイルユーティリティを呼び出して特定のタスクを実行します。 GNOMEでxdg - 開く着信電話gvfs-openそしてxdg 無言劇着信電話gvfsについて(両方のgvfs- *ツールはファイル拡張子として判断することに優先順位を付けます)。あなたの場合、DEは見つかりません。xdg 無言劇また戻る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 }
結果が必ずしも100%正確ではないということは事実ですが、file
[1]それについてできることはあまりありません(私の考えはまだ仕事に最適なツールです)。ただし、ファイル拡張子(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 yourfile