it-swarm-id.com

Bagaimana cara mencairkan setelah tidak sengaja menekan Ctrl-S di terminal?

Ini adalah situasi yang cukup sering terjadi pada saya: setelah saya tekan (dengan niat berbeda) Ctrl-S di terminal, interaksi (input atau output) dengan itu dibekukan. Mungkin semacam "kunci gulir" atau apa pun.

Bagaimana saya mencairkan terminal setelah ini?

(Kali ini, saya telah bekerja dengan apt-Shell inside a bash inside urxvt-- tidak yakin siapa di antara mereka yang bertanggung jawab atas penanganan khusus Ctrl-S: Saya sedang mencari riwayat perintah mundur dengan C-r, seperti biasa untuk readline, tapi kemudian saya ingin "kembali" meneruskan sejarah dengan yang biasa - setidaknya di Emacs--C-s ( 1 , 2 , ), tetapi itu menyebabkan terminal membeku. Nah, menggulir/membuka halaman untuk melihat hal-hal yang lalu masih berfungsi di terminal, tetapi tidak ada interaksi dengan proses yang berjalan di sana.)

Ctrl-Q

Untuk menonaktifkan ini sama sekali, tetap stty -ixon dalam skrip startup. Untuk mengizinkan kunci apa saja agar semuanya mengalir lagi, gunakan stty ixany.

ps: Bukan terminal atau Shell yang melakukan ini, tetapi driver terminal OS.

924
ak2

Ctrl-Q memang jawabannya. Saya pikir saya akan memasukkan sedikit sejarah ini yang terlalu panjang untuk masuk dalam margin jawaban yang benar ak2 .

Kembali di zaman kegelapan, terminal adalah peralatan besar yang terhubung ke perangkat jarak jauh (awalnya terminal lain karena teletype jauh lebih mudah untuk belajar beroperasi daripada kunci telegraf) melalui kabel panjang atau melalui saluran telepon dengan modem. Pada saat Unix berkembang, kode ASCII sudah mapan (meskipun kode EBCDIC yang bersaing dari IBM masih merupakan kekuatan yang harus diperhitungkan).

Terminal paling awal menyimpan catatan cetak dari setiap karakter yang diterima. Selama karakter datang tidak lebih cepat daripada kepala cetak bisa mengetiknya, setidaknya. Tetapi begitu terminal berbasis CRT memungkinkan, masalahnya muncul bahwa hanya sekitar 25 baris yang sesuai dengan CRT, dan 25 baris 80 karakter mewakili cukup RAM sehingga tidak ada yang berpikir serius untuk menyediakan lebih banyak = = RAM untuk karakter yang telah menggulir dari bagian atas layar.

Jadi, beberapa konvensi diperlukan untuk memberi sinyal bahwa pihak pengirim harus berhenti untuk membiarkan pembaca mengejar ketinggalan.

7-bit ASCII kode memiliki 33 titik kode yang dikhususkan untuk mengontrol karakter (0 hingga 31 dan 127). Beberapa di antaranya memiliki tujuan yang sangat mapan, seperti NUL (kosong pemimpin pita kertas untuk threading, celah, dan sambungan), DEL (karakter "dicoret" pada pita kertas yang ditunjukkan dengan meninju semua tujuh lubang), BEL (Ding!), CR, LF, dan TAB. Tetapi empat didefinisikan secara eksplisit untuk mengendalikan perangkat terminal itu sendiri (DC1 hingga DC4 alias Ctrl + Q, Ctrl + R, Ctrl + S dan Ctrl + T).

Dugaan terbaik saya adalah bahwa beberapa insinyur berpikir bahwa (seperti mnemonik pergi), "S" untuk "Stop" dan "Q" untuk "Lanjutkan" tidak terlalu buruk, dan ditugaskan DC3 berarti "tolong hentikan pengiriman" dan DC1 berarti "ok, terus kirim sekarang".

Bahkan konvensi itu sudah mapan pada saat Unix meninggalkan sarang di Bell Labs untuk pergi ke dunia.

Konvensi ini dikenal sebagai kontrol aliran perangkat lunak, dan sangat umum di perangkat serial nyata. Ini tidak mudah untuk diimplementasikan dengan benar, karena mencegah penggunaan salah satu karakter tersebut untuk tujuan lain di saluran komunikasi, dan sinyal Stop harus ditangani terlebih dahulu dari setiap karakter yang diterima tertunda untuk menghindari pengiriman lebih dari yang dapat diterima penerima menangani.

Jika praktis, menggunakan sinyal tambahan keluar dari aliran data serial untuk kontrol aliran jauh lebih disukai. Pada koneksi kabel langsung yang mampu menggunakan kabel sinyal tambahan, Anda akan menemukan jabat tangan perangkat keras yang digunakan, yang membebaskan karakter tersebut untuk penggunaan lainnya.

Tentu saja, jendela terminal saat ini tidak menggunakan port serial fisik yang sebenarnya, memiliki bilah gulir, dan tidak benar-benar memerlukan perangkat lunak sama sekali. Tetapi konvensi itu tetap ada.

Saya ingat klaim bahwa Richard Stallman menerima keluhan tentang pemetaannya Ctrl + S untuk pencarian tambahan dalam rilis pertama emacs, dan bahwa ia agak tidak simpatik kepada setiap pengguna yang harus bergantung pada 7-bit, koneksi aliran terkontrol perangkat lunak.

412
RBerteig