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é.
Réponses
Trop de publicités?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é.
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")' &
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.
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.