Ini adalah situasi yang cukup sering terjadi pada saya: setelah saya tekan (dengan maksud berbeda) Ctrl-Sdi 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
bagian bash
dalam - urxvt
tidak yakin yang mana dari mereka yang bertanggung jawab untuk penanganan khusus Ctrl-S: Saya sedang mencari riwayat perintah dengan mundur C-r, seperti biasa untuk membaca, tapi kemudian saya ingin kembali "kembali "Maju melalui sejarah dengan yang biasa - setidaknya di Emacs - C-s( 1 , 2 , 3 ), tetapi itu menyebabkan terminal membeku. Nah, bergulir / paging untuk melihat hal-hal masa lalu masih bekerja di terminal, tetapi tidak ada interaksi dengan proses yang berjalan di sana.)
vim
dan saya menekan Ctrl-S untuk menyimpan suntingan saya. Uh-ohXD
Jawaban:
Ctrl-Q
Untuk menonaktifkan ini sama sekali, masukkan
stty -ixon
skrip startup. Untuk mengizinkan kunci apa saja agar semuanya mengalir kembali, gunakanstty ixany
.ps: Bukan terminal atau shell yang melakukan ini, tetapi driver terminal OS.
sumber
Ctrl-C
; apakah itu bekerja juga? (Dan di tempat lain , mereka menyarankanCtrl-Q
, sama seperti kamu.)stty
.)Ctrl-S
dan kemudianCtrl-Q
melanjutkan.Ctrl- Qmemang jawabannya. Saya pikir saya akan melemparkan sedikit sejarah ini yang terlalu panjang untuk masuk ke 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 yang paling awal menyimpan catatan cetak dari setiap karakter yang diterima. Selama karakter datang tidak lebih cepat daripada print head 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 RAM yang cukup sehingga tidak ada yang berpikir serius tentang menyediakan lebih banyak RAM untuk karakter yang telah menggulir ke atas. layar.
Jadi, beberapa konvensi diperlukan untuk memberi sinyal bahwa pihak pengirim harus berhenti untuk membiarkan pembaca mengejar ketinggalan.
Kode ASCII 7-bit memiliki 33 titik kode yang ditujukan untuk mengontrol karakter (0 hingga 31 dan 127). Beberapa dari mereka memiliki tujuan yang benar-benar mapan, seperti
NUL
(kosong pemimpin pita kertas untuk threading, kesenjangan, dan splices),DEL
( "dicoret" karakter pada pita kertas yang ditunjukkan oleh meninju semua tujuh lubang),BEL
(ding!),CR
,LF
, DanTAB
. Tetapi empat didefinisikan secara eksplisit untuk mengendalikan perangkat terminal itu sendiri (DC1
untukDC4
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
untuk berarti "tolong berhenti mengirim" danDC1
berarti "ok , lanjutkan mengirim 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 dari karakter-karakter itu untuk tujuan lain di saluran komunikasi, dan sinyal Stop harus ditangani terlebih dahulu dari setiap karakter yang diterima yang 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.
sumber