macos shell scripting command

macos - ¿Cómo consigo que un archivo ".command" de Mac se cierre automáticamente después de ejecutar un script de shell?



scripting (7)

Aparte de tener que usar las soluciones AppleScript anteriores, esta es la única solución de script de shell que funcionó ( exit no), aunque de manera abrupta, para mí (probada en OS X 10.9):

... echo "$l" done done killall Terminal

Por supuesto, esto eliminará todas las instancias de Terminal en ejecución, por lo que si estaba trabajando en una ventana de Terminal antes de ejecutar el script, también se terminará. Afortunadamente, el relanzamiento de la Terminal lo lleva a un estado "Restaurado" pero, sin embargo, esto debe considerarse solo para casos de borde y no como una solución limpia.

En mi shell script, mis últimas líneas son:

... echo "$l" done done exit

Tengo la preferencia de Terminal configurada en "Cuando el shell sale: cerrar la ventana". En todos los demás casos, cuando escribo "exit" o "logout", en la Terminal, la ventana se cierra, pero para este archivo ".command" (puedo hacer doble clic en mi archivo de script de shell y se ejecuta el script) de cerrar la ventana, mientras que el código del archivo dice "salir", lo que se muestra en la pantalla es:

... $l done logout [Process completed]

... y la ventana permanece abierta. ¿Alguien sabe cómo hacer que se ejecute un script de shell y luego salir automáticamente de la ventana de Terminal al finalizar?

¡Gracias!


Esto funcionó perfectamente para mí ... simplemente cierra esa ventana de ejecución dejando abiertas otras ventanas de terminal

Simplemente abra el Terminal y vaya a Terminal> Preferencias> Configuración> Shell:> Cuando el shell sale: -> Cerrar si el shell salió limpiamente

Luego simplemente agregue exit; al final de su archivo.


Estoy usando el siguiente comando en mi script

quit -n terminal

Por supuesto, usted tiene que tener el terminal configurado para que nunca avise antes de cerrar.


Finalmente pude encontrar una respuesta a esto. Al igual que la respuesta de Cobbal, invoca AppleScript, pero como es la única ventana que tendría abierta, y quiero ejecutar mi script como una rápida operación de apertura y cierre, este enfoque más brutal, funciona muy bien para mí.

Dentro del script ".command" en sí mismo, "... agregue esta línea a su script al final"

osascript -e ''tell application "Terminal" to quit'' & exit

FUENTE: http://forums.macosxhints.com/archive/index.php/t-2538.html


Hay una configuración para esto en la aplicación Terminal. Desafortunadamente, es relativo a todas las ventanas de Terminal, no solo a las que se lanzaron a través del archivo .command.


Podrías usar un poco de hacking Applecript para esto:

tell application "Terminal" repeat with i from 1 to number of windows if (number of (tabs of (item i of windows) whose tty is "/dev/ttys002")) is not 0 then close item i of windows exit repeat end if end repeat end tell

reemplazando /dev/ttys002 con tu tty


Use la opción ''Terminal> Preferencias> Configuración> Shell:> Cuando el shell sale: -> Cerrar si el shell salió limpiamente'' mencionada anteriormente, pero coloque

exit 0

como la última línea de su archivo de comando. Eso asegura que la secuencia de comandos realmente "salga limpiamente"; de lo contrario, si el comando anterior no vuelve exitoso, entonces la ventana no se cerrará.