Я можу використовувати 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.
Я дуже хотів би мати можливість отримати доступ до цих даних програмно з терміналу.