Puedo usar mdls para mostrar el Identificador de tipo uniforme (UTI) para un archivo arbitrario, así como la jerarquía de tipos que son superconjuntos de una 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"
)
¿Hay alguna herramienta que pueda mostrar qué aplicaciones se han registrado para una IU en particular que no sean prueba y error?
De la inspección queda claro que foo.command
Terminal.app abrirá el archivo, pero no está nada claro que foo.ksh pertenezca actualmente a TextEdit.app.
Me gustaría poder leer la base de datos de Mac OS X Launch Services directamente sin tener que recurrir a open
la aplicación para ver qué aplicación se elige por UTI. Sería como tener --preview --verbose
interruptores abiertos para decirme qué haría en lugar de hacerlo.
Aún mejor sería una forma de enumerar todas las aplicaciones que podrían abrir esa UTI, incluso si no son la aplicación preferida.
Para obtener esta información secundaria, tengo que crear o encontrar un archivo para cada tipo de interés y usar Finder para mostrar manualmente qué aplicaciones podrían abrir esa UTI.
Realmente me gustaría poder acceder a estos datos mediante programación desde el terminal.
Respuestas:
El duti de Andrew Mortensen es una CLI que enumerará los controladores de UTI:
-d <uti>
enumera el controlador predeterminado;-l <uti>
enumera todos los manejadores registrados.Vea la página del manual para holandés .
EDITAR: como señala Lri en esta respuesta , duti no parece enumerar todas las aplicaciones posibles (¿posiblemente porque no tiene en cuenta la herencia de infecciones urinarias? Eso sería un tema para una mayor investigación). Su solución recomendada, AllApllication , obviamente sería una mejor respuesta.
fuente
Puede usar este comando para examinar la base de datos de servicios de lanzamiento. La opción -dump le brinda toda la base de datos, luego puede canalizar esto en grep y buscar lo que quiera.
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep -n7 'your search string'
fuente