Quand j'ai fini avec Terminal, je veux le quitter. En ce moment, j'ai trois options:
killall Terminal. Cela mettra fin au processus, mais plutôt brusquement. Je ne pense pas que ce soit la meilleure idée.
Appelez la sortie. J'ai modifié les paramètres, donc exit ferme Terminal. Cependant, l'application reste ouverte dans le Dock et ne fait pas ce que je veux.
Clic droit> Quitter. Cependant, ce n'est pas une commande de terminal pour le quitter.
Alors maintenant, comment puis-je sortir et fermer le terminal? J'ai entendu parler d'osascript mais je n'en suis pas très sûr. Je souhaite quitter et fermer afin que Terminal ne soit plus ouvert, à la fois en tant que fenêtre et en tant que processus.
dans Terminal.app
Préférences> Profils> (sélectionnez un profil)> Shell.
sur 'When the Shell exits' choisi 'Fermer la fenêtre'
Que diriez-vous du bon vieux Command-Q?
J'utilise ctrl + d
. Il vous jette dans la destination où vous avez démarré la commande sqlite3.
En fait, vous devez définir une configuration sur votre terminal. Lorsque votre terminal est opérationnel, appuyez sur ⌘+, alors vous verrez l'écran ci-dessous:
Appuyez ensuite sur l'onglet Shell et vous verrez l'écran ci-dessous:
Sélectionnez maintenant Close if the Shell exited cleanly
pour lorsque le shell se ferme .
Avec la configuration ci-dessus à chaque fois avec la commande exit
, le terminal se ferme mais ne se ferme pas.
Dans une fenêtre de terminal, vous pouvez taper:
kill -9 $(ps -p $PPID -o ppid=)
Cela supprimera le processus d'application Terminal, qui est le parent du parent du processus en cours, comme indiqué par la commande kill.
Pour fermer une fenêtre de terminal depuis un script en cours d'exécution, vous devez monter d'un niveau supplémentaire dans la hiérarchie des processus, comme suit:
kill -9 $(ps -p $(ps -p $PPID -o ppid=) -o ppid=)
Vous pouvez utiliser AppleScript avec la commande osascript
:
osascript -e 'tell application "Terminal" to quit'
osascript -e "tell application \"System Events\" to keystroke \"w\" using command down"
Cela simule un CMD + w appuyez sur la touche.
Si vous voulez que Terminal quitte complètement, vous pouvez utiliser: osascript -e "tell application \"System Events\" to keystroke \"q\" using command down"
Cela ne génère aucune erreur et arrête le terminal proprement.
Vous pouvez également utiliser cette commande compliquée, qui ne déclenche pas d'avertissement concernant la fin de son propre processus:osascript -e "do Shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit
Cette commande est assez longue, vous pouvez donc définir un alias (tel que quit
) dans votre profil bash:alias quit='osascript -e "do Shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit'
Cela vous permettrait de taper simplement quit
dans le terminal sans avoir à manipuler d’autres paramètres.
Utilisez la commande osascript
dans votre code comme indiqué par icktoofay: osascript -e 'tell application "Terminal" to quit'
Ensuite, ouvrez les préférences du terminal, accédez à Paramètres> Shell, puis réglez "Demander avant la fermeture:" sur "Jamais". Le terminal doit maintenant quitter complètement (ne pas rester ouvert dans votre dock) et ignorer l'invite avant de quitter. Si une seule fenêtre de terminal est ouverte et que la commande osascript
est votre dernière ligne de code, il convient d'attendre que la commande que vous avez exécutée précédemment se termine.
Ce ne serait pas idéal si vous exécutez des scripts dans la même fenêtre ou dans d’autres fenêtres en arrière-plan (par exemple, vous pouvez exécuter une commande en arrière-plan et continuer à utiliser la fenêtre actuelle pour d’autres commandes si la première commande est suivie par une esperluette). ) Faites attention!
Si vous enveloppez le code osascript
dans un fichier de script Shell, vous pouvez probablement l'appeler avec le nom de fichier que vous lui donnez --- tant qu'il se trouve dans le chemin de recherche du terminal (exécutez echo $PATH
pour voir où le terminal cherche les scripts).
J'ai utilisé
quitter -n terminal
à la fin de mes scripts. Vous devez avoir le terminal configuré pour ne jamais demander dans les préférences
Donc Terminal> Préférences> Paramètres> Shell Lorsque le Shell quitte Fermez la fenêtre Invite avant de fermer Jamais
cat ~/exit.scpt
command + w
pour fermer l'onglet)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
comme vi ~/.bashrc
ou zshrc
(autre chose?)
ajoutez-le: alias exit="osascript ~/exit.scpt"