Apa gunanya Ctrl-S?


135

Ctrl+ Smenghentikan semua output ke terminal yang dapat dimulai kembali dengan Ctrl+ Q.

Tapi, mengapa Ctrl+ Sada di tempat pertama? Masalah apa yang coba dipecahkan dengan menempatkan urutan kontrol itu pada tempatnya?


5
Lihat: linusakesson.net/programming/tty (bacalah semuanya, tetapi terutama bagian tentang Flow Control ...)
Olivier Dulac

8
Telah menggunakan Ctrl-S / Ctrl-Q untuk menyimpan bacon saya berkali-kali untuk menghentikan keluaran pesan kesalahan yang tidak bisa dijalankan pada sistem yang nyaris tidak berfungsi sehingga saya bisa melihat apa itu.
DocSalvager

4
Sebagai catatan, saya memiliki ini dalam saya .bashrcuntuk menonaktifkan kedua fungsi: stty stop ''; stty start '';. Ini membuat Ctrl-S bebas untuk digunakan sebagai karakter pelarian screen, dengan ini di .screenrc:: escape ^Ss. Yang pada gilirannya berarti bahwa saya dapat menggunakan readlinepintasan standar Ctrl-A untuk "awal baris" (cocok dengan Ctrl-E untuk "ujung baris", dan kurang rapuh untuk emulasi terminal daripada Rumah dan Akhir). : D
IMSoP

Jawaban:


155

Jauh sebelum ada komputer, ada teleprinter (alias teletypewriters, alias teletypes). Pikirkan mereka kira-kira teknologi yang sama seperti telegraf, tetapi dengan beberapa jenis keyboard dan beberapa jenis printer yang melekat padanya.

Karena teletype sudah ada ketika komputer pertama kali dibangun, dan karena komputer pada saat itu berukuran ruangan, teletype menjadi antarmuka pengguna yang nyaman dengan komputer pertama - ketik perintah, tekan tombol kirim, tunggu sebentar, dan output dari perintah dicetak ke selembar kertas di depan Anda.

Kontrol aliran perangkat lunak berasal sekitar era ini - jika printer tidak dapat mencetak secepat teletype menerima data, misalnya, teletype dapat mengirim perintah kontrol aliran XOFF ( Ctrl+ S) ke sisi jarak jauh dengan mengatakan "Hentikan pengiriman untuk sekarang" , dan kemudian dapat mengirim perintah kontrol aliran XON ( Ctrl+ Q) ke sisi jarak jauh yang mengatakan "Saya sudah menyusul, silakan lanjutkan".

Dan penggunaan ini bertahan di Unix karena emulator terminal modern meniru terminal fisik (seperti vt100 ) yang dengan sendirinya (dalam beberapa hal) meniru teletipe.


29
Kemungkinan besar tidak "dicetak ke selembar kertas" tetapi "dicetak ke tumpukan kertas fanfold".
Dubu

3
Atau ke GULUNGAN kaset yang dilubangi!
mdpc

2
Saya tidak berpikir control-S dan control-Q pada awalnya digunakan untuk memulai dan menghentikan output dari komputer, melainkan dari pembaca kertas-tape yang terpasang pada teletype lain . Saya tidak berpikir akan ada banyak minat dalam menghubungkan teletype ke komputer sampai munculnya sistem pembagian waktu. Kalau tidak, setiap saat komputer menghabiskan menunggu pengguna untuk mengetik sesuatu adalah waktu itu tidak menghabiskan melakukan sesuatu yang bermanfaat.
supercat

2
Atau ke gulungan kertas 8½ʹʹ.
Scott

44
Kembali pada tahun 1987 saya membuat teletype terakhir yang bertahan di universitas saya terbakar. Menggunakannya sebagai printer seri dan tidak menyadari itu akan terlalu panas jika dipaksa untuk mencetak 35 halaman terus menerus. Panas yang berlebihan hanya berbau tidak enak, tetapi kemudian kertas terbakar karena panas. Baru kemudian mereka memberi tahu saya bahwa saya seharusnya memberikan Ctrl-S setiap 2 halaman untuk membiarkannya dingin selama beberapa menit.
Tonny

25

Ini adalah karakter kontrol dari waktu terminal VT100 dan sejenisnya. Ada kemampuan pengguliran yang terbatas (jika ada) pada terminal tersebut untuk memulai dengan CTRL-S memungkinkan Anda untuk membekukan output untuk melihat apa yang saat ini ada di layar tanpa dihapuskan.

Hampir semua yang Anda lihat di terminal modern dibuat untuk meniru sistem terminal lama itu.


Inilah yang saya dengar, (daripada jawaban teleprinter, meskipun mungkin (bahkan mungkin) bahwa ini adalah alasan fungsi tersebut dipertahankan.) Saya telah menggunakan Cntr-S untuk tujuan ini, ketika mengalami masalah dengan lebih atau kurang
Lyndon White

2
Kebutuhan mekanis untuk memulai / menghentikan keluaran datang sebelum manusia harus dapat membacanya!
TripeHound

@ TripeHound: Memang, itu datang jauh sebelum ada harapan khusus bahwa manusia akan melihat informasi saat diterima (seseorang yang dengan sabar menunggu cerita mungkin menonton karena diterima oleh teletype, tetapi operator biasanya memiliki hal-hal yang lebih baik melakukan).
supercat

21

BTW, jika Anda mencantumkan output yang panjang di layar Anda, kemungkinan Anda tidak harus membaca secepat komputer yang mengeluarkan output. Menggunakan CTRL-S / CTRL-Q pada kucing (atau ekor aktif) SANGAT berguna untuk menghentikan dan melanjutkan output.


25
lesslebih.
dotancohen

2
@dotancohen: Sangat lucu. Bahkan moretidak diperkenalkan sampai empat atau lima tahun setelah Unix pertama (menampilkan cat, tetapi tidakcat -v ) dirilis. Perhatikan juga bahwa ada sistem operasi timesharing (interaktif) lain sebelum Unix; misalnya RSTS .
Scott

2
@dotancohen saya lebih suka less, tetapi orang mengatakan bahwa, sementara lessini more, mostmasih lebih dari less!
Volker Siegel

1
@ VolkerSiegel: Terima kasih telah memperkenalkan saya kepada most! Jika Anda mengetahui suatu program yang memungkinkan orang melihat file gambar (gif, jpg, png) di atas ssh pada cli, saya ingin mendengarnya. Saat ini saya menggunakan asciiviewatau img2txttetapi keduanya tidak memuaskan.
dotancohen

2
@ VolkerSiegel: Juga terima kasih banyak ! Seperti yang penulis katakan: "Mengapa puas dengan kurang?". Pengguna Debian bisa apt-get install most.
mivk

17

Pada teletipe kuno dengan pembaca pita kertas, tanda kontrol-Q akan menyalakan pembaca pita kertas dan mulai mengirimkan karakter dari pita seolah-olah mereka telah diketik di papan ketik. Control-S akan mematikan pembaca pita kertas. Jika seseorang menganggap bahwa teletype pada awalnya dimaksudkan bukan untuk mencetak data dari komputer, tetapi dari teletype lain, seharusnya cukup jelas bagaimana "mematikan pembaca pita kertas" dapat ditafsirkan sebagai analog dengan "meminta ujung lain untuk berhenti mentransmisikan".

Kebetulan, control-R akan menyalakan punch tape-kertas, sehingga setiap karakter yang diterima oleh teletype (atau, jika gema lokal diaktifkan, mengetik pada keyboard) juga akan mendapatkan pukulan ke tape kertas; control-T akan mematikan kertas-tape punch. Berbeda dengan operasi yang terkait dengan control-S dan control-Q, operasi tersebut tampaknya tidak memiliki padanan modern.

Juga, nama asli untuk kontrol-Q / R / S / T adalah DC1 / DC2 / DC3 / DC4 ("Kontrol Perangkat 1", dll.) Walaupun saya tidak yakin dengan sejarahnya, penamaan seperti itu akan menyarankan bahwa awalnya mereka dimaksudkan untuk memicu beberapa jenis tindakan yang tidak ditentukan, tetapi hal yang paling umum dilakukan orang-orang dengan DC1 dan DC3 adalah mengendalikan pembaca pita kertas.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.