11 votos

Localización de una aplicación por su identificador de paquete desde la línea de comandos

Estoy buscando una manera de encontrar la ubicación de una aplicación en el sistema desde la línea de comandos utilizando su identificador de paquete. Puedo abrirlo así:

open -b 'com.zerotier.ZeroTierOne'

... donde com.zerotier.ZeroTierOne es mi ID de paquete, pero lo que quiero hacer es localizar dónde está instalada realmente la aplicación. Quiero un comando que devuelva (por ejemplo):

/Applications/ZeroTier One.app

en respuesta a una consulta con el identificador 'com.zerotier.ZeroTierOne'.

La opción "-R" para abrir revelará en finder pero quiero que esto sea completamente no interactivo y se haga a través de un shell script.

23voto

AdamIerymenko Puntos 141

El comando mágico es:

mdfind kMDItemCFBundleIdentifier = "com.zerotier.ZeroTierOne"

Se puede determinar esto trabajando hacia atrás desde mdls foo | grep kMDItemCF

Así que si no conocías el identificador de paquetes CF de iPhoto:

Mac:~ me$ mdls /Applications/iPhoto.app | grep kMDItemCF
kMDItemCFBundleIdentifier           = "com.apple.iPhoto"

0 votos

¿Existe una API equivalente en Foundation para esto?

1 votos

@mservidio He respondido a esa pregunta en StackOverflow porque es específico de la programación

1 votos

@AdamIerymenko (¡gracias por ZeroTier, por cierto!) No necesitas la tubería extra para grep: mdls -name kMDItemCFBundleIdentifier -raw "/Applications/Google Chrome.app" funciona.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X