Esci automaticamente Terminal durante la digitazione di uscita
-
16-10-2019 - |
Domanda
Scenario
Io uso terminale SSH molto, ma vorrebbe l'App Terminal per uscire quando l'ultimo Tab si chiude con l'uscita. Ho già finestra terminale stesso impostato per chiudere in uscita successo, però terminale continua a funzionare. Ho seguito del tutorial qui che utilizza di Ricky Campbell un AppleScript per uscire terminale. AppleScript funziona perfettamente durante l'esecuzione all'esterno del Terminal, tuttavia qualche modo non posso ottenere il comando trap di lavoro che deve essere inserito nel terminale.
Per avere un riferimento mi post il testo pertinente qui:
Ora abbiamo bisogno di un modo per calcio d'inizio allo script. Questo può essere fatto con il comando bash “trappola”, avendo in ascolto per il segnale EXIT. Dal momento che voglio che questo accada ogni volta che il mio utente apre una shell, lo aggiungo al mio file .profile. Lo faccio con nano:
$ nano ~ / .profile
In questo file aggiungere la seguente da qualche parte. Potrebbe essere necessario modificare il percorso del file AppleScript creato in precedenza:
trappola '/ usr / bin / osascript $ HOME / Scripts / QuitTerminal.scpt' EXIT
Tutto questo non fa altro che ascoltare il segnale EXIT all'interno di bash e quando si ottiene, esegue lo script che abbiamo creato in precedenza.
Domanda
Come posso fare sulla risoluzione di questo problema. Per qualche motivo la trappola non è sparare o lavorando come dovrebbe, anche dopo numerosi riavvii. C'è un modo alternativo per ottenere l'App Terminale per chiudono quando l'ultima scheda uscite?
Soluzione
I link forniti da Dori ha portato alla soluzione. L'articolo suggerisce che il comando trappola dovrebbe essere in .profile
, quando invece deve essere collocato in .bashrc
. Spostamento allo script corretto risolto il problema.
Soluzione
L'approccio dato qui sembra un po 'più semplice, forse sarebbe lavoro per voi?
Se non si vuole ricordare di digitare "quit" invece di "uscita", e si sta usando bash, basta aggiungere il seguente al vostro
.bashrc
o altri script di avvio della shell:trap '/usr/bin/osascript -e "tell application \"terminal\" to quit"' 0
Che fare? Quando la shell riceve il segnale 0 (zero), che è, detto di uscita, esegue questo comando come ultima cosa che fa. In questo modo la shell, ecc, per uscire con garbo, e chiedendo Terminal.app per uscire tramite AppleScript si assicura che fa lo stesso. In altre parole, il tipo di 'uscita', e le vostre uscite shell, quindi viene chiuso Terminal, tutta la natura in modo pulito e il modo in cui intende.
Altri suggerimenti
È anche possibile utilizzare questo comando contorto, che non innescare un avvertimento circa terminare il proprio processo:
osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit
In alternativa, è possibile definire un alias (come quit
o exit
) nel tuo profilo:
alias quit='osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit'
non ha bisogno trap
alcun segnale.
Semplicemente, mettere il comando osascript nel file ~/.bash_logout
(crearlo, se non esiste)
osascript -e "tell application \"Terminal\" to quit"
Il .bash_logout
viene eseguito da bash dopo il logout. È possibile inserire qualsiasi comando della shell in questo file, ogni volontà eseguito quando si logout.
Ad esempio, è possibile aprire una finestra del Finder nella cartella in cui è stato visto l'ultima, prima di uscire, con open .
o come ...
open .
say "Good bye, my master - leaving terminal now, continue with Finder"
osascript -e "tell application \"Terminal\" to quit"
e così via ...
Trovo questo URL per il multi tabed caso Terminal.
http: // cyberdork33. wordpress.com/2010/05/25/make-osx-terminal-quit-when-last-window-closed/
appena testato su OS X 10.8.2
TL.DR:
per la parte scheda (Esci per chiudere scheda corrente)
Terminal> Preferenze> Impostazioni> Shell
Quando le uscite shell: Chiudere se la shell uscito in modo pulito (o chiudere la finestra)
Prompt prima della chiusura: mai (o solo se ci sono processi diversi gli accessi shell e: Inserire "osascript")
per la parte ultima scheda (uscita per chiudere questa ultima scheda e intere finestre di terminale e uscire Terminal.app):
1) di accodamento per ~/.bash_profile
:
trap '/usr/bin/osascript $HOME/Scripts/QuitTerminal.scpt' EXIT
2) creare script / QuitTerminal.scpt
tell application "Terminal"
# If there is only one tab remaining, and it contains the word "logout"
# then this is the final window
if (count of (tabs of (every window whose visible is true))) = 1 then
try
set theContents to words of ((contents of tab 1 of window 1) as Unicode text)
set exitLastTab to (theContents contains "logout")
on error
set exitLastTab to false
end try
if exitLastTab is true then
quit
end if
else if (count of (tabs of (every window whose visible is true))) < 1 then
# If no window remains open, then obviously we can quit the app.
# This would occur when the final window is closed without 'exit'
quit
end if
end tell
La speranza aiuta.