
Eu sou capaz de usar mdls para mostrar oIdentificador de tipo uniforme(UTI) para um arquivo arbitrário, bem como a hierarquia de tipos que são superconjuntos de uma UTI específica.
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"
)
Existem ferramentas que podem mostrar quais aplicativos foram registrados para uma UTI específica, além de tentativa e erro?
Fica claro pela inspeção que o foo.command
arquivo será aberto pelo Terminal.app, mas não está claro se foo.ksh atualmente pertence ao TextEdit.app.
Eu gostaria de poder ler o Mac OS XLançar serviçosbanco de dados diretamente, sem realmente recorrer ao uso open
para ver qual aplicativo é escolhido por UTI. Seria como ter --preview --verbose
interruptores abertos para me dizer o que faria, em vez de fazê-lo.
Melhor ainda seria uma maneira de listar todos os aplicativos que poderiam abrir aquela UTI, mesmo que não sejam o aplicativo preferido.
Para obter essas informações secundárias, tenho que criar ou encontrar um arquivo para cada tipo de interesse e usar o Finder para mostrar manualmente quais aplicativos podem abrir aquela UTI.
Eu realmente gostaria de poder acessar esses dados programaticamente a partir do terminal.
Responder1
Andrew Mortensendeveré uma CLI que listará os manipuladores de UTI:
-d <uti>
lista o manipulador padrão;-l <uti>
lista todos os manipuladores registrados.
Veja opágina de manual para duti.
EDIT: como Lri aponta emesta resposta, duti não parece listar todas as aplicações possíveis (possivelmente porque não leva em conta a herança da UTI? Isso seria um assunto para uma investigação mais aprofundada). Sua solução,Todos os aplicativos(archive.org) daria uma resposta mais completa.
Responder2
É possível usar este comando para examinar o banco de dados de serviços de inicialização. A opção -dump fornece o banco de dados inteiro, então você pode canalizá-lo para o grep e pesquisar o que quiser.
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep -n7 'your search string'