cara membatalkan "stty intr ^ M"

1

Pada Unix bash, ketika saya menjalankan stty intr ^M(^ M adalah Control-M) saya secara efektif memblokir diri saya dari menjalankan perintah apa pun. Setiap kali saya menekan tombol "kembali", saya mengirim sinyal interupsi ke shell dan perintah saya tidak pernah dijalankan. Misalkan saya punya ini di profil saya (saya tidak benar-benar ..); bagaimana saya bisa keluar dari lubang ini dari sesi bash dengan ^ M diatur untuk memicu sinyal interupsi?

Chris

Chris
sumber

Jawaban:

3

bash memiliki kedua ^ M dan ^ J terikat accept-linesecara default, sehingga Anda dapat menggunakan keduanya.

Ignacio Vazquez-Abrams
sumber
1
Begitu stty intr ^c^jberhasil. Anda juga dapat menggunakan ^vuntuk 'melarikan diri' ^m, jadi stty intr ^c^v^jberfungsi. Satu-satunya keanehan di sana adalah bahwa ^jdan ^vdan ^mharus menjadi kode kunci kontrol; yang ^cdapat menjadi kontrol kode-kunci atau dua karakter, sisipan dan v.
Jonathan Leffler
2

Secara umum (yaitu jika hal-hal bahkan lebih kacau dari ini dan Anda tidak tahu bagaimana cara memperbaikinya), Anda dapat lari sttydari tty lain menggunakan

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

Jika Anda tidak yakin tty mana yang memiliki pengaturan yang kacau, gunakan whoatau psuntuk mencari tahu tty apa yang Anda gunakan, dan stty < /dev/whatevermasing - masing secara bergantian sampai Anda menemukan yang salah.

Random832
sumber
0

Saya akan menyarankan stty sane ^J, tapi itu tidak mengatur ulang interupsi. Anda harus melakukan sesuatu seperti ini:

$ stty intr ^C^J

The ^Cberdiri untuk Control-C. Anda biasanya bisa mendapatkannya dengan menekan Control-V / Control-C.

David W.
sumber