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 ?
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 ?
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
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.