57 votes

Fermer la fenêtre du terminal depuis le script shell (Unix) ?

Existe-t-il un moyen de fermer une fenêtre de terminal à partir d'un script shell ? J'ai un fichier .command qui devrait disparaître une fois terminé.

60voto

Simon Urbanek Points 7803

L'utilisation de exit 0 terminera proprement le script.

Que la fenêtre du terminal reste ouverte est configurable par l'utilisateur. La valeur par défaut est de toujours rester ouvert. Pour changer cela :

 Terminal.app > Preferences > Profiles > Shell
    - "When the shell exists:"
        > Close if the shell exited cleanly
    - "Ask before closing:"
        (•) Never
        -- OR --
        (•) Only if there are....

Lorsque "Fermer si le shell s'est terminé proprement" est utilisé, le script fermera la fenêtre si le résultat de sortie est 0, ce qui est la valeur par défaut si rien ne s'est mal passé.

27voto

KevinM Points 271

Puisque vous ne voulez pas supprimer toutes les fenêtres du Terminal, changez d'abord le nom de votre fenêtre de "Terminal" en autre chose :

echo -n -e "\033]0;Mon nom de fenêtre\007"

Ensuite, à la fin du script, utilisez :

osascript -e 'dit à l'application "Terminal" de se fermer (chaque fenêtre dont le nom contient "My Window Name")' &

13voto

Arron Points 140

Cela fonctionne pour moi:

 #!/bin/sh

{your script here}

osascript -e 'tell application "Terminal" to close (every window whose name contains ".command")' &
exit

Cela fonctionnera pour fermer uniquement vos fenêtres ouvertes avec un fichier .command mais laisser les choses déjà en cours d'exécution dans d'autres fenêtres de terminal. Je sais que j'ai presque toujours l'audace ou le grognement de regarder quelque chose, donc je ne veux pas quitter totalement le terminal.

8voto

user2373121 Points 41
closeWindow() {
    /usr/bin/osascript << _OSACLOSE_
    tell application "Terminal"
        close (every window whose name contains "YourScriptName")
    end tell
    delay 0.3
    tell application "System Events" to click UI element "Close" of sheet 1 of window 1 of application process "Terminal"
_OSACLOSE_
}

Cela fermera la fenêtre Terminal de votre script et gardera toutes les autres fenêtres Terminal ouvertes tant que leurs titres de fenêtre ne correspondent pas. Pour que cela fonctionne, Terminal devra être ajouté à la liste des applications autorisées à utiliser le framework d'accessibilité. Vous pouvez également parcourir les fenêtres du terminal avec une commande de répétition et fermer chaque fenêtre x contenant un élément d'interface utilisateur "Fermer" sur la feuille 1.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X