Parfois, je quitte par inadvertance une session Terminal (généralement parce que je pense que je suis connecté à un système distant, alors que je ne le suis pas), alors j'arrive à ce point:
Comment puis-je redémarrer la session à ce stade? Je ne veux pas fermer la fenêtre ou l'onglet car j'ai un tas d'onglets tous configurés pour mon flux de travail normal, donc je veux juste que la session dans l'onglet actuel recommence (c'est-à-dire revenir à une invite bash).
La seule solution que j'ai trouvée jusqu'à présent est de quitter complètement Terminal et de l'ouvrir à nouveau, mais c'est loin d'être idéal car cela interrompt évidemment tout ce que je fais dans d'autres fenêtres / onglets de Terminal.
^t 8
par exemple) pour un contexte donné, au lieu de compter visuellement sur quel onglet cliquer ou (ou combien de ctrl-pgup frapper) .cd
Cependant, j'ai généralement environ trois shells édités en code source lorsque je travaille sur du code, ce qui correspond à votre utilisation.ssh
quelque part. Je viens de m'habituer à utiliser l'écran et à l'utiliser localement ainsi que sur des sessions distantes. Si je comprends bien, si vous n'avez pas déjàscreen
dans votre mémoire musculaire, apprenez tmux parce que l'écran est vieux et cruel. Je pourrais probablement basculer verstmux
et le configurer pour utiliser toutes les mêmes raccourcis clavier que j'utilisescreen
, mais l'écran fonctionne toujours bien pour moi.Réponses:
À ce stade, il n'y a aucun moyen de récupérer l'onglet. La session de terminal est fermée et elle n'a plus de téléscripteur. Il n'y a tout simplement aucun moyen de référencer l'onglet afin de faire quelque chose d'intelligent. Je suggère d'ajouter cette fonction à votre .bashrc ou .profile afin que vous n'ayez plus le problème à l'avenir:
ou, pour ceux d'entre nous qui utilisent le Z Shell (ajoutez-le à votre .zshrc):
C'est une jolie petite barrière entre vous et cette commande de sortie ennuyeuse! Seigneur sait que j'ai fait la même chose plusieurs fois dans le passé.
la source
-t 5
option), la commande de lecture échouera, ce qui déclenchera la commande de sortie qui la suivra.exit
si vous utilisez Bash. Vous pouvez mettre votre script dedans~/.bash_logout
..bash_logout
?logout
créerIGNOREEOF
un alias et définir une valeur supérieure à 1 (ou relier ^ D).Le script de William T Froggard n'a pas fait ce dont j'avais besoin, car en général, la seule façon d'entrer dans cette situation est via ^ D ( ctrl+ D), et la redéfinition
exit
n'a rien fait pour cette situation. Pour moi, la suggestion de Dennis Williamson de fixerIGNOREEOF
était suffisante. Je viens d'ajouter:dans mon
~/.bashrc
fichier et maintenant (si je suis dans le shell de niveau supérieur et que je quitte le terminal), le premier ^ D génère la réponse:Si je tape à nouveau ^ D immédiatement, le shell se ferme, donc sortir quand je veux est toujours facile, mais maintenant un seul ^ D me donnera un avertissement. (Si vous le souhaitez, vous pouvez définir
IGNOREEOF
un nombre plus élevé pour exiger des ^ D consécutifs supplémentaires.)Aussi utile, si je suis dans un sous-shell, le premier ^ D génère la réponse:
Encore une fois, un ^ D supplémentaire me fera sortir, et maintenant je peux faire la différence entre quitter un sous-shell et quitter le shell de niveau supérieur.
la source