Launch Servicesデータベースに、任意のファイルまたはUTIタイプを開くアプリケーションを照会することはできますか?


11

mdlsを使用して、任意のファイルのUniform Type Identifier(UTI)と、特定のUTIのスーパーセットであるタイプの階層を表示できます。

mac:~ mike$ mdls -name kMDItemContentType -name kMDItemContentTypeTree foo.ksh
kMDItemContentType     = "public.ksh-script"
kMDItemContentTypeTree = (
    "public.ksh-script",
    "public.shell-script",
    "public.script",
    "public.source-code",
    "public.plain-text",
    "public.text",
    "public.data",
    "public.item",
    "public.content"
)
mac:~ mike$ mdls -name kMDItemContentType -name kMDItemContentTypeTree foo.command
kMDItemContentType     = "com.apple.terminal.shell-script"
kMDItemContentTypeTree = (
    "com.apple.terminal.shell-script",
    "public.shell-script",
    "public.script",
    "public.source-code",
    "public.plain-text",
    "public.text",
    "public.data",
    "public.item",
    "public.content"
)

試行錯誤以外に、特定のUTIに登録されているアプリを表示できるツールはありますか?

検査からfoo.commandファイルがTerminal.appによって開かれることは明らかですが、foo.kshが現在TextEdit.appに属していることはまったく明らかではありません。

実際にを使用して、UTIごとにどのアプリが選択されているかを確認することなく、Mac OS X Launch Servicesデータベースを直接読み取ることができるようにしたいと思いopenます。それは、それを--preview --verbose行うのではなく、何をするかを教えてくれるスイッチを開くようにするようなものです。

優先アプリでなくても、UTIを開くことができるすべてのアプリを一覧表示する方法がさらに良いでしょう。

この二次情報を取得するには、関心のある種類ごとにファイルを作成または検索し、Finderを使用して、そのUTIを開くことができるアプリを手動で表示する必要があります。

ここに画像の説明を入力してください

端末からプログラムでこのデータにアクセスできるようにしたいのですが。


zshの完了は興味深いようですが、標準出力として取得する方法がわかりません。AppApplicationsのソースコードを調べて、バイナリがLionで動作するか、コンパイルできるかを確認します。それは素晴らしいペアです-ありがとうございます!
bmike 2011

回答:


6

Andrew Mortensenのdutiは、UTIハンドラーをリストするCLIです。

  • -d <uti> デフォルトのハンドラをリストします。
  • -l <uti> 登録されているすべてのハンドラをリストします。

dutimanページを参照してください

編集:Lriがこの回答で指摘しているように、dutiはすべての可能なアプリケーションをリストしているようには見えません(おそらく、UTI継承を考慮していないためでしょうか?これは、さらに調査する必要があります)。彼の推奨ソリューションであるAllApllicationsは、明らかにより良い答えです。


ただし、メニューから開くメニューに表示されるアプリがいくつかありません。
Lri

非常に奇妙な。どれが欠けているか教えていただけますか?
kopischke 2010年

他の質問の回答を編集し、dutiからの出力例を含めました。
Lri

dutiは適切に記述されていますが、現在は非推奨のAPIを使用しています。developer.apple.com/library/prerelease/mac/documentation/Carbon/…
Mugen

OK-これを自作でインストールすると、ホームランがノックされます。本当にありがとう!
bmike

11

このコマンドを使用して、サービス起動データベースを調べることができます。-dumpオプションはデータベース全体を提供し、これをgrepにパイプして、好きなものを検索できます。

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep -n7 'your search string'


このダンプを処理してアプリバンドルを吐き出す方法、または特定のkMDItemContentTypeを解析する特定のmdimporterファイルの場所をフォローアップ質問におそらく尋ねる必要がありますが、これは非常に役立ちました。ありがとう
bmike 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.