Я могу использовать 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.
Я действительно хотел бы иметь возможность получить доступ к этим данным программно из терминала.
Ответы:
Дуэт Эндрю Мортенсена - это CLI, в котором будут перечислены обработчики UTI:
-d <uti>
перечисляет обработчик по умолчанию;-l <uti>
перечисляет все зарегистрированные обработчики.Смотрите man-страницу для duti .
РЕДАКТИРОВАТЬ: как Lri указывает в этом ответе , duti, кажется, не перечисляет все возможные приложения (возможно, потому что он не учитывает наследование UTI? Это было бы вопросом для дальнейшего расследования). Его рекомендуемое решение, AllApllications , очевидно, будет лучшим ответом.
источник
Вы можете использовать эту команду для проверки базы данных служб запуска. Опция -dump дает вам всю базу данных, затем вы можете направить ее в grep и искать то, что вам нравится.
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep -n7 'your search string'
источник