Lorsque j'ai terminé avec le terminal, je veux le quitter. Pour le 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 changé les paramètres pour quitter le terminal. L'application apparaît toujours ouverte dans le Dock et ne fait pas ce que je veux qu'elle fasse.
Faites un clic droit> Quitter. Cependant, ce n'est pas une commande de terminal pour le quitter.
Alors maintenant, comment dois-je quitter et fermer le terminal? J'ai entendu quelque chose sur osascript mais je ne suis pas trop sûr. Je veux quitter et fermer, pour que le Terminal ne soit plus ouvert, à la fois en tant que fenêtre et en tant que processus.
kill
, parkillall
défaut , l' envoiSIGTERM
, qui peut être intercepté. Certains programmes l'attrapent, nettoient après eux et se terminent gracieusement. Aucune idée siTerminal.app
est parmi eux. Cependant, je soupçonne que ce serait mieux sur Ask Different ou Super User à la rigueur car il ne semble pas avoir de contenu de programmation.Réponses:
dans Terminal.app
Préférences> Profils> (Sélectionnez un profil)> Shell.
sur 'Quand le shell sort' choisi 'Fermer la fenêtre'
la source
Et le bon vieux Command-Q?
la source
Dans l'application Terminal, onglet Préférence >> Profils .
Sélectionnez l' onglet Shell sur la droite.
Vous pouvez choisir Ne jamais demander avant de fermer pour supprimer l'avertissement.
la source
When shell exits:
"fermer la fenêtre"En fait, vous devez définir une configuration sur votre terminal, lorsque votre terminal est en marche, appuyez sur ⌘+, ,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
à la sortie du shell .Par la configuration ci-dessus chaque fois avec la
exit
commande, le terminal se fermera mais ne quittera pas.la source
Vous pouvez utiliser AppleScript via la
osascript
commande:la source
.bashrc
(ou équivalent si vous utilisez un shell différent). Je pense toujours à une réponse à la 2.exit
après avoir démarré le processus démonisé. Une fois que le processus démonisé a attendu une seconde, il peut appelerosascript
comme décrit.osascript
:tell application "System Events" to keystroke "a" using command down
. Cela aura probablement aussi le problème.Dans une fenêtre de terminal, vous pouvez taper:
Cela tuera le processus d'application Terminal, qui est le parent du parent du processus actuel, comme le montre la commande kill.
Pour fermer une fenêtre de terminal à partir d'un script en cours d'exécution, vous devez monter d'un niveau de plus dans la hiérarchie des processus comme ceci:
la source
kill -9
que si vous savez que d'autres signaux ne fonctionneront pas.J'utilise
ctrl + d
. Il vous jette dans la destination où vous avez commencé la commande sqlite3 en premier lieu.la source
osascript -e "tell application \"System Events\" to keystroke \"w\" using command down"
Cela simule une pression sur la touche CMD+ w.
Si vous souhaitez que Terminal se ferme complètement, vous pouvez utiliser:
osascript -e "tell application \"System Events\" to keystroke \"q\" using command down"
Cela ne donne aucune erreur et fait que le terminal s'arrête proprement.
la source
Vous pouvez également utiliser cette commande alambiqué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.la source
Utilisez la
osascript
commande 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 et définissez «Invite avant de fermer:» sur «Jamais». Le terminal doit maintenant se fermer complètement (ne pas rester ouvert dans votre dock) et ignorer l'invite avant de quitter. Si vous n'avez qu'une seule fenêtre Terminal ouverte et que la
osascript
commande est votre dernière ligne de code, elle doit attendre la commande que vous avez exécutée avant de se terminer.Ce ne serait pas idéal si vous exécutez des scripts dans la même fenêtre ou 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 d'une esperluette ); Faites attention!
Si vous encapsulez le
osascript
code dans un fichier de script shell, vous pouvez probablement l'appeler avec le nom de fichier lapidaire que vous lui donnez --- tant qu'il est dans le chemin de recherche de Terminal (exécutezecho $PATH
pour voir où Terminal recherche les scripts).la source
Créez un script:
cat ~/exit.scpt
comme ça:
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
Ensuite, ajoutez un alias dans votre * shrc
juste comme
vi ~/.bashrc
ouzshrc
(autre chose?)ajoutez-le:
alias exit="osascript ~/exit.scpt"
Et source le ~ / .bashrc ou rouvrez votre terminal.app
la source
J'ai utilisé
quitter -n terminal
à la fin de mes scripts. Vous devez avoir le terminal configuré pour ne jamais inviter dans les préférences
So Terminal> Préférences> Paramètres> Shell Lorsque le shell se ferme Fermer la fenêtre Demander avant de fermer Jamais
la source
J'ai essayé plusieurs variantes des réponses ici. Peu importe ce que j'essaye, je peux toujours trouver un cas d'utilisation où l'utilisateur est invité à fermer Terminal.
Étant donné que mon script est simple (
drutil -drive 2 tray open
- pour ouvrir un lecteur de DVD spécifique), l'utilisateur n'a pas besoin de voir la fenêtre Terminal pendant que le script s'exécute.Ma solution était de transformer le script en une application, qui exécute le script sans afficher de fenêtre de terminal. L'avantage supplémentaire est que toutes les fenêtres de terminal déjà ouvertes restent ouvertes, et si aucune n'est ouverte, alors Terminal ne reste pas résident après la fin du script. Il ne semble pas du tout lancer Terminal pour exécuter le script bash.
J'ai suivi ces instructions pour transformer mon script en application: https://superuser.com/a/1354541/162011
la source
S'il s'agit d'un Mac, vous tapez «exit» puis appuyez sur retour.
la source