Terminal.app equivalente a `xterm -e 'cmd'`

Con xterm(y gnome-terminal, terminator, etc), puede ejecutar el siguiente comando:

$ xterm -e 'vim somefile.txt'

xterm abrirá y ejecutará el programa especificado (en este caso, Vim). Cuando el programa sale, la ventana del terminal también se cierra. Al ejecutar el comando anterior, si saliera de Vim, la terminal también desaparecería.

¿Hay alguna forma de obtener esta funcionalidad (o similar) a través de Terminal.app (en OSX)? La solución puede estar en AppleScript, Bash o cualquier otra cosa, siempre que se pueda lograr a través de comandos que podría ejecutar en un script Bash.

Eso me lleva a iniciar el terminal desde la línea de comandos, lo que ayuda, pero aún necesito que ejecute un programa y cierre la ventana cuando ese programa salga.

Respuestas (2)

Con AppleScript, puede hacer:

en ejecución argv
    establezca el comando en el elemento 1 de argv; puede personalizarlo para que sea constante
    Dile a la aplicación "Terminal"
        activar
        hacer guión (comando & "; salir")
    final decir
carrera final

Esto abrirá la Terminal y le indicará que ejecute un comando (su configuración predeterminada debe cerrar la ventana cuando se cierra el shell). Para ejecutar esto, simplemente useosascript filename.scpt "$command_to_run"

Puede usar el opencomando ( /usr/bin/open).

Por ejemplo, digamos que quiero abrir el archivo test.txt con Textmate y luego cerrar el shell. Podría usar el siguiente comando:

open -W -a Textmate test.txt && exit
  • La -Wopción hará que espere hasta que se cierre Textmate.
  • La -Aopción le permite especificar la aplicación

La segunda parte de la línea de comando ( exit) no hará que se cierre la aplicación Terminal, pero puede cerrar la ventana Terminal si cambia las preferencias predeterminadas. En las preferencias de Terminal, haga clic en la pestaña Shell y cambie la configuración Cuando el shell salga para Cerrar la ventana

Preferencias de terminal

Si realmente desea salir de la aplicación Terminal, puede reemplazarlo exitpor una llamada a un script Bash. Por ejemplo:

#!/bin/sh

echo | osascript <<EOF
tell application "Terminal"
  quit
end tell
EOF

(Fuente adaptada de Mac OS X Hints )

Esto aún hará que Terminal muestre una ventana emergente que le preguntará si desea cerrar la aplicación.

Ventana emergente de terminal