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を開くことができるアプリを手動で表示する必要があります。
端末からプログラムでこのデータにアクセスできるようにしたいのですが。