92 votes

Comment fermer le terminal dans OSX à partir de la ligne de commande ?

Pourquoi "exit" ne ferme-t-il pas une fenêtre Terminal.app sous Mac OS X ?

$ exit
logout

[Process completed]

Existe-t-il un moyen de fermer la fenêtre sans utiliser la souris ?

0voto

Kyle Johnston Points 41

Si vous voulez terminer l'application elle-même à partir de la ligne de commande :

killall Terminal

0voto

Andrew Odri Points 111

J'avais besoin d'une variante de cette solution pour une application qui exigeait de l'utilisateur qu'il saisisse son mot de passe dans le terminal pour un sudo script. La sécurité de Catalina rend l'envoi de frappes clavier très pénible, alors j'espère que cette solution aidera quelqu'un d'autre à l'avenir :

tell application "Terminal"
    activate
    do script "sudo say --rate=140 Intergalactic && kill -9 $$"
    delay 5
    repeat
        try
            do shell script "ps a | grep -v grep | grep 'sudo say --rate=140 Intergalactic'"
            delay 0.5
        on error
            exit repeat
        end try
    end repeat
    close front window
end tell

Voici une explication pour certaines des choses qui semblent bizarres :

  • kill -9 $$ : C'est en gros exit qui fonctionne ; pour une raison quelconque exit ne fonctionnait pas pour moi pour mon application. Vous voulez tuer le processus Shell pour que l'utilisateur ne soit pas invité à utiliser un terminal en cours d'exécution... Cela lui permettra de se fermer silencieusement.
  • try...do shell script : Ceci vérifie si la commande est toujours en cours d'exécution, et si oui, la boucle continue pour que la fenêtre ne soit pas tuée. Si grep trouve une correspondance, il renvoie un code d'erreur 0 (AppleScript est content) ; si grep ne trouve pas de correspondance, il renvoie un code d'erreur 1 et votre script s'arrête alors que la fête est sur le point de commencer.
  • close front window : Oui, je réalise que #closefrontwindowisconsideredharmful. Il y a un intervalle de 500ms où soit une autre fenêtre de terminal pourrait venir en focus, soit l'utilisateur pourrait Command+Tab vers une autre fenêtre de terminal ou autre... Je me dis que si vous interagissez avec la fenêtre, il s'agit probablement d'un cas limite. N'hésitez pas à trouver une meilleure solution et à nous en faire part !

Je vais probablement maintenir occasionnellement cette chose ici : https://gist.github.com/andrewodri/e0440c52f7c0a7333c35ab6443581efe

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X