Я могу использовать MDL для показа универсального идентификатора типа (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.
Я действительно хотел бы иметь возможность получить доступ к этим данным программно из терминала.