Terminal: comando para mostrar la carpeta de la aplicación

2

Recientemente descubrí que puedo abrir una aplicación desde Terminal como esta:

$ open -a TextEdit

¿Hay algún comando que muestre la carpeta de la aplicación en lugar de abrirla? Tal que podría hacer esto:

$ alias vmrun=\"'some-command 'VMware Fusion''/Contents/Library/vmrun\"

Necesito que some-command para imprimir la carpeta de la aplicación VMware Fusion.

ACTUALIZACIÓN: no sé dónde está instalada la aplicación, de lo contrario podría simplemente codificarla en el script

    
pregunta Tair 31.08.2015 - 20:36

5 respuestas

2

Creo que esto es lo que estás buscando:

alias vmrun=\"'osascript -e 'tell application "Finder" to get POSIX path of (application file id "com.vmware.fusion" as alias)''/Contents/Library/vmrun\"

Ahora cuando escribo vmrun , sin ningún argumento, en un Terminal y presiono Ingresar se genera el archivo de ayuda interno, como debería.

Esto funciona en mi sistema, sin embargo, devuelve la primera aparición de la ruta del paquete de la aplicación "VMware Fusion.app". Tengo cuatro visiones diferentes instaladas, por lo que no sería ideal en mi situación, aunque para las que solo tienen una versión instalada, funciona.

    
respondido por el user3439894 31.08.2015 - 23:50
3

Acabo de crear y subir un GitHub Gist GitHub Gist que puede ayudarte.

La funcionalidad principal es:

function get_apps_folder () { 
    mdfind -0 -onlyin / \
        'kMDItemKind=="Application" && kMDItemDisplayName="'"${1:-TextEdit}"'"' \
    | xargs -0 -I{} dirname {} 
}

function open_apps_folder () {
    open $(get_apps_folder "$1")
}

Podría tomar eso y agregar las dos funciones a su ~/.bash_profile y estarían disponibles para cualquier sesión de shell interactiva que esté usando. (Y sí, las comillas simples y dobles mezcladas e integradas pueden ser complicadas) .--)

Pero, para dar una mejor explicación, la parte principal es:

mdfind -0 -onlyin / 'kMDItemKind=="Application" && kMDItemDisplayName="VMware Fusion"' | xargs -0 -I{} open {}

El -onlyin /path limita la búsqueda solo al volumen raíz, de lo contrario, también se buscará cualquier volumen adjunto "Spotlight-searchable" adjunto, incluyendo Time Machine, que puede ser difícil de manejar y / o detallado, por lo tanto, usar -onlyin / .

En el Gist, cada salida de línea por mdfind se alimenta a xargs que llama a open sobre lo que se le pasa. Tenga en cuenta que no hay una comprobación particularmente sólida de lo que se pasa a xargs (es decir, se supone que está obteniendo un directorio).

mdfind y mdls pueden ser bastante útiles para cosas como esta, aunque pueden tardar un poco en acostumbrarse. Generalmente uso mdls /path/to/file para tener una idea de qué metadatos tiene ese tipo de archivo. Luego puedo tomar esas claves y valores para buscar usando mdfind . Puede encontrar una gran cantidad de páginas, ejemplos y documentación, BTW.

    
respondido por el jps3 31.08.2015 - 23:58
2

Solo escribe:

mdfind <target_file_name.ext>

Si hay coincidencias, se le presentarán las rutas asociadas relevantes. Si hay más de uno, elija el que sea apropiado y codifíquelo.

Por ejemplo:

me@MacBook-Pro:~$mdfind "VMware Fusion.app"
/opt/homebrew-cask/Caskroom/vmware-fusion/7.1.2-2779224/VMware Fusion.app

O más probable, uno de estos:

you@MacBook-Pro:~$mdfind "VMware Fusion.app"
/Applications/VMware Fusion.app
/Users/you/Applications/VMware Fusion.app
respondido por el tjt263 01.09.2015 - 08:21
1

Dos opciones rápidas y fáciles:

  1. Puede usar Spotlight ( mdfind ) a través de la línea de comandos para elementos de alto nivel:

    appLocation=$(mdfind Fusion.app)
    echo $appLocation
    /Applications/VMware Fusion.app
    
  2. O si usa el binario locate (el comando de requisito previo para habilitarlo se notará la primera vez que lo use).

    appLocation=$(locate vmrun)
    echo "Found at " $appLocation
    Found at /Applications/VMware Fusion.app/Contents/Library/vmrun
    
respondido por el willWorkForCookies 01.09.2015 - 04:09
0

Tienes que añadir:

alias vmrun='/Applications/VMware\ Fusion.app/Contents/Library/vmrun'

a su ~/.bash_profile , guarde el archivo y la fuente ~/.bash_profile . En el futuro, solo tiene que escribir vmrun para iniciar la herramienta.

Si necesita acceso rápido a más comandos de este directorio, puede agregar:

:/Applications/VMware\ Fusion.app/Contents/Library/

a tu camino.

    
respondido por el klanomath 31.08.2015 - 21:10

Lea otras preguntas en las etiquetas