comment annuler “stty intr ^ M”

1

Sous Unix, quand je cours stty intr ^M (^ M est Control-M) Je me suis effectivement empêché d'exécuter des commandes. Chaque fois que j'appuie sur la touche "retour", j'envoie le signal d'interruption au shell et ma commande n'est jamais exécutée. Supposons que j'ai eu cela dans mon .profile (je n'ai pas réellement ..); comment pourrais-je me sortir de ce trou après une session bash avec ^ M réglé pour déclencher un signal d'interruption?

Chris

Chris
la source

Réponses:

3

bash a à la fois ^ M et ^ J lié à accept-line par défaut, vous pouvez donc utiliser soit.

Ignacio Vazquez-Abrams
la source
1
Alors stty intr ^c^j travaux. Vous pouvez aussi utiliser ^v pour "échapper" au ^m, alors stty intr ^c^v^j travaux. La seule bizarrerie est que le ^j et ^v et ^m doivent être des codes de clé de contrôle; la ^c peut être soit un code de touche de contrôle, soit deux caractères, caret et v.
Jonathan Leffler
2

En général (c’est-à-dire que si les choses sont encore plus compliquées et que vous ne savez pas comment les réparer), vous pouvez exécuter stty d'un autre tty utilisant

stty sane < /dev/whatever
stty intr ^c < /dev/whatever

Si vous ne savez pas quel tty a les paramètres modifiés, utilisez who ou ps pour savoir ce que vous utilisez, et juste stty < /dev/whatever chacun à son tour jusqu'à trouver celui qui ne va pas.

Random832
la source
0

J'allais suggérer stty sane ^J, mais cela ne réinitialise pas l’interruption. Vous devrez faire quelque chose comme ça:

$ stty intr ^C^J

le ^C représente le Control-C. Vous pouvez généralement obtenir cela en appuyant sur Control-V / Control-C.

David W.
la source