Я могу использовать mdls, чтобы показать универсальный идентификатор типа (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.
Я хотел бы иметь возможность читать базу данных Mac OS X Launch Services напрямую, не прибегая к использованию, open
чтобы увидеть, какое приложение выбрано для каждого UTI. Это было бы похоже --preview --verbose
на то, как открылись переключатели, чтобы сказать мне, что будет делать, а не делать это.
Еще лучше было бы перечислить все приложения, которые могут открывать этот UTI, даже если они не являются предпочтительным приложением.
Чтобы получить эту дополнительную информацию, мне нужно создать или найти файл для каждого типа интересов и использовать Finder, чтобы вручную показать, какие приложения могут открывать этот UTI.
Я действительно хотел бы иметь возможность получить доступ к этим данным программно из терминала.