4 votos

¿Cómo saber si iTerm está instalado en un mac desde un shell script?

Estoy escribiendo un script automatizado que instalará iTerm2 si no está ya instalado. Cuál es una buena manera de comprobar si iTerm2 ya está instalado?

8voto

Oskar Puntos 1242

El comando abrir la abrirá sin importar donde la persona la tenga instalada (no es necesario poner una app en /Aplicaciones en MacOS).

open -a iTerm.app

También puedes buscar con spotlight

 mdfind "kMDItemCFBundleIdentifier == com.googlecode.iterm2"

2 votos

¡Buen uso de Spotlight!

0 votos

Utilizando open -a iTerm.app en un shell automatizado script para probar algo es muy inconveniente...

0 votos

@klanomath es mala forma en un instalador también, ya que no debe asumir que nadie ha iniciado sesión todavía. Debería actualizar esto para las directrices de empaquetado.... la única manera sería decirle a alguien, "estamos a punto de abrir iTerm 2, haga clic aquí para descargarlo si la aplicación no se abre en breve..."

1voto

moodforaday Puntos 2633

Hay al menos dos lugares donde se puede encontrar iTerm.app, en la carpeta /Applications/ (99% de las veces) o la propia carpeta del usuario $HOME/Applications/ (muy raro, pero posible).

Puedes comprobar si está en alguno de esos lugares de esta manera:

if [ ! -d '/Applications/iTerm.app' -a ! -d "$HOME/Applications/iTerm.app" ]
then

    echo 'iTerm is not installed'

fi

También mencionaré que ya tengo un script que descargará e instalará la última versión de iTerm:

https://github.com/tjluoma/di/blob/master/di-iterm.sh

que forma parte de mi di - descargar e instalar que lo hará para más de 300 aplicaciones Mac.

di-iterm.sh utiliza el feed oficial de Sparkle / XML para comprobar si existe la última versión, y hay formas de utilizar las versiones beta o nightly si prefieres una de esas opciones.

Si ya está instalado y actualizado, simplemente informará de ello y saldrá.

Si es no instalado o desactualizado, el script descargará la última versión, la instalará y moverá la versión antigua a la papelera.

Si tienes preguntas o problemas, no dudes en dejarme un issue en GitHub o enviarme un email (mi email está en el script). Por favor, también siéntete libre de usar / adaptar mi script como punto de partida si quieres hacer algo diferente.

1 votos

Super bonus tool - di-licious

1voto

Suponiendo que esté instalado en la carpeta estándar de Aplicaciones, utilice

if [[ ! -d /Applications/iTerm.app ]]; then
    # proceed with installing iTerm
fi

Si desea cubrir situaciones en las que iTerm no está instalado en la ubicación estándar, puede utilizar

open -g -j -a iTerm 2>/dev/null
if [[ $? -eq 0 ]]; then
    sleep 3
    osascript -e 'tell application "iTerm" to quit'
else
    # install iTerm
fi

Si iTerm ya se está ejecutando, se cerrará en este caso.

0 votos

Siéntase libre de chupar mi mdfind en su respuesta mucho más completa si quiere...

0 votos

@bmike En realidad sólo quería borrar la mía después de ver su mdfind magia :-)

1 votos

Los metadatos se están convirtiendo en mi superpoder - mdls y xattr ¡todas las cosas!

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