Cuando termine con Terminal, quiero salir. Ahora mismo, tengo tres opciones:
Terminal de killall. Terminará el proceso, pero de forma bastante abrupta. No creo que esta sea la mejor idea.
Llame a la salida. Cambié la configuración, así que salir cierra la Terminal. Sin embargo, la aplicación todavía aparece abierta en el Dock y no hace lo que quiero que haga.
Haga clic derecho> Salir. Sin embargo, este no es un comando de Terminal para salir.
Entonces, ¿cuál es la forma en que debo salir y cerrar la Terminal? Escuché algo sobre osascript pero no estoy muy seguro. Quiero salir y cerrar, para que la Terminal ya no esté abierta, tanto como ventana como como proceso.
kill
, elkillall
envío predeterminado esSIGTERM
, que se puede detectar. Algunos programas lo detectan, limpian después de sí mismos y salen con gracia. No tengo idea de siTerminal.app
está entre ellos. Sin embargo, sospecho que esto sería mejor en Ask Different o Super User en caso de apuro, ya que no parece tener ningún contenido de programación.Respuestas:
en Terminal.app
Preferencias> Perfiles> (Seleccionar un perfil)> Shell.
en 'Cuando el shell sale' elegido 'Cerrar la ventana'
fuente
¿Qué tal el viejo Command-Q?
fuente
En la aplicación Terminal, pestaña Preferencias >> Perfiles .
Seleccione la pestaña Shell a la derecha.
Puede elegir No preguntar nunca antes de cerrar para suprimir la advertencia.
fuente
When shell exits:
"cerrar la ventana"En realidad, debe establecer una configuración en su Terminal, cuando su Terminal esté arriba presione ⌘+ y ,luego verá la siguiente pantalla:
Luego presione la pestaña de shell y verá la siguiente pantalla:
Ahora selecciona
Close if the shell exited cleanly
para cuando se cierra la concha .Por la configuración anterior, cada vez con el
exit
comando, la Terminal se cerrará pero no se cerrará.fuente
Puede usar AppleScript a través del
osascript
comando:fuente
.bashrc
(o equivalente si usa un shell diferente). Todavía estoy pensando en una respuesta a 2.exit
después de comenzar el proceso demonizado. Después de que el proceso demonizado haya esperado un segundo, podría llamarosascript
como se describe.osascript
:tell application "System Events" to keystroke "a" using command down
. Sin embargo, esto probablemente también tenga el problema.En una ventana de terminal, puede escribir:
Esto matará el proceso de aplicación de Terminal, que es el padre del padre del proceso actual, como lo ve el comando kill.
Para cerrar una ventana de Terminal desde dentro de un script en ejecución, debe subir un nivel más en la jerarquía de procesos como este:
fuente
kill -9
menos que sepa que otras señales no funcionarán.Que he estado usando
ctrl + d
. Lo lanza al destino donde inició el comando sqlite3 en primer lugar.fuente
osascript -e "tell application \"System Events\" to keystroke \"w\" using command down"
Esto simula una pulsación de tecla CMD+ w.
Si desea que Terminal se cierre por completo, puede usar:
osascript -e "tell application \"System Events\" to keystroke \"q\" using command down"
Esto no da ningún error y hace que la Terminal se detenga limpiamente.
fuente
También puede utilizar este complicado comando, que no activa una advertencia sobre la finalización de su propio proceso:
osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit
Este comando es bastante largo, por lo que podría definir un alias (como
quit
) en su perfil de bash:alias quit='osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit'
Esto le permitiría simplemente escribir
quit
en la terminal sin tener que jugar con ninguna otra configuración.fuente
Use el
osascript
comando en su código como mencionó icktoofay:osascript -e 'tell application "Terminal" to quit'
Luego, abra las preferencias de Terminal, vaya a Configuración> Shell y configure "Preguntar antes de cerrar:" en "Nunca". La terminal ahora debería cerrarse por completo (no permanecer abierta en su dock) e ignorar el mensaje antes de salir. Si solo tiene una ventana de Terminal abierta y el
osascript
comando es su última línea de código, debe esperar a que termine el comando que ejecutó antes.Esto no sería ideal si está ejecutando scripts en la misma ventana u otras ventanas en segundo plano (por ejemplo, puede ejecutar un comando en segundo plano y continuar usando la ventana actual para otros comandos si el primer comando va seguido de un ampersand ); ¡ten cuidado!
Si envuelve el
osascript
código en un archivo de script de shell, probablemente pueda llamarlo con cualquier nombre de archivo conciso que le dé --- siempre que esté en la ruta de búsqueda de Terminal (ejecuteecho $PATH
para ver dónde Terminal busca scripts).fuente
Crea una secuencia de comandos:
cat ~/exit.scpt
Me gusta esto:
command + w
para cerrar la pestaña)tell application "Terminal" set WindowNum to get window count if WindowNum = 1 then quit else tell application "System Events" to keystroke "w" using command down end if end tell
Luego agregue un alias en su * shrc
como
vi ~/.bashrc
ozshrc
(¿algo más?)agregarlo:
alias exit="osascript ~/exit.scpt"
Y obtenga el ~ / .bashrc o vuelva a abrir su terminal.app
fuente
He estado usando
salir -n terminal
al final de mis guiones. Debe tener el terminal configurado para que nunca pregunte en las preferencias
Entonces Terminal> Preferencias> Configuración> Shell Cuando el shell sale Cierre la ventana Preguntar antes de cerrar Nunca
fuente
Probé varias variaciones de las respuestas aquí. No importa lo que intente, siempre puedo encontrar un caso de uso en el que se le solicite al usuario que cierre la Terminal.
Dado que mi secuencia de comandos es simple (
drutil -drive 2 tray open
para abrir una unidad de DVD específica), el usuario no necesita ver la ventana de Terminal mientras se ejecuta la secuencia de comandos.Mi solución fue convertir el script en una aplicación, que ejecuta el script sin mostrar una ventana de Terminal. El beneficio adicional es que cualquier ventana de terminal que ya esté abierta permanece abierta, y si no hay ninguna, Terminal no permanece residente después de que finaliza el script. No parece iniciar Terminal en absoluto para ejecutar el script bash.
Seguí estas instrucciones para convertir mi script en una aplicación: https://superuser.com/a/1354541/162011
fuente
Si se trata de una Mac, escriba 'salir' y luego presione Intro.
fuente