Bagian penuh dari halaman manual Bash yang hanya berlaku mengatakan:
Jika sistem operasi tempat bash berjalan mendukung kontrol pekerjaan, bash berisi fasilitas untuk menggunakannya. Mengetik karakter yang ditangguhkan (biasanya ^ Z, Control-Z) saat proses sedang berjalan menyebabkan proses tersebut dihentikan dan mengembalikan kontrol ke bash. Mengetik karakter menangguhkan tertunda (biasanya ^ Y, Control-Y) menyebabkan proses dihentikan ketika mencoba membaca input dari terminal, dan kontrol dikembalikan ke bash. Pengguna kemudian dapat memanipulasi keadaan pekerjaan ini, menggunakan
bg
perintah untuk melanjutkannya di latar belakang, thefg
perintah untuk melanjutkannya di latar depan, atau perintah kill untuk membunuhnya. A ^ Z segera berlaku, dan memiliki efek samping tambahan yang menyebabkan output yang tertunda dan ketik akan dibuang.
Saya tidak pernah menggunakan Ctrl- Y; Saya baru saja mempelajarinya. Saya baik-baik saja dengan Ctrl- Z(menangguhkan) saja.
Saya mencoba untuk membayangkan apa opsi ini untuk . Kapan itu berguna?
(Perhatikan bahwa fitur ini tidak ada pada semua varian Unix. Ada di Solaris dan FreeBSD tetapi tidak di Linux. Pengaturan yang sesuai adalah stty dsusp
.)
Mungkin kurang subyektif: Apakah ada sesuatu yang dapat dicapai dengan Ctrl- Yyang tidak dapat dicapai dengan mudah dengan Ctrl- Z?
sumber
stty dsusp
, saya belum berhasil membuatnya mengirim SIGTSTP setelah ^ Y (saya lakukan pada Solaris). Sudahkah Anda?Jawaban:
Dari manual 4BSD untuk csh :
Jadi, tujuannya adalah untuk mengetikkan beberapa input saat yang pertama sedang diproses, dan menghentikan pekerjaan setelah selesai.
sumber
^Y
akan dibaca berhasil, dan kemudian ketika^Y
dipukul proses akan dihentikan. Apakah saya membaca ini?^Y
, bahkan jika Anda telah menolak proses dan menutup terminal Anda sebelum proses dilanjutkan. Kanan? ( "... setelah itu dilanjutkan, ia menerima masukan dari sebelumnya ^ Y." Itulah yang saya maksud; Saya biasanya tidak berurusan dengan kode C.) :)Katakanlah ada loop membaca input dan mengeksekusi. Mungkin bermanfaat untuk membiarkan tugas menyelesaikan instruksi saat ini yang dikomputasinya, tanpa memotongnya sebelum kembali ke baris perintah untuk yang baru. Jadi dengan demikian untuk mengakhiri suatu siklus. Ini mengakhiri loop dengan anggun dan mencegahnya berjalan lagi jika
read
berada di bawah batasan waktu habis.sumber
^Z
melakukannya kemudian .Saya bisa memikirkan satu skenario di mana itu mungkin berguna, tetapi itu adalah kasus tepi yang dibuat-buat.
Misalkan Anda sedang men-debug skrip yang sedang menulis file sementara yang ingin Anda analisis sebelum dihapus sebagai bagian dari rutinitas pembersihan.
Anda dapat menambahkan suatu
read foo
tempat setelah file ditulis (tetapi sebelum pembersihan), jalankan skrip, dan tekan Ctrl- Ysaat sedang dibuat. Anda kemudian akan dibawa ke prompt dengan skrip ditangguhkan di latar belakang untuk melakukan apa pun yang perlu Anda lakukan, dan kemudianfg
dapat memungkinkan skrip untuk menyelesaikan.sumber
^Z
. Dengan kata lain: setelah Anda mengetikfg
Anda akan harus memberikan script beberapa masukan pula sebelum itu akan terus berlanjut. Karena itu pertanyaan saya; Saya masih tidak mengerti maksudnya^Y
. (Terima kasih telah menjawab!) :)Satu-satunya skenario yang dapat saya pikirkan (dan bahkan saya tidak merasa sangat meyakinkan), adalah jika Anda ingin menggunakan beberapa jenis-depan untuk perintah shell. Katakanlah beberapa perintah sedang berjalan yang akan membaca input beberapa waktu di masa depan. Maka Anda dapat ^ Y itu, dan kemudian segera ketik perintah shell berikutnya yang ingin Anda jalankan ketika perintah yang berjalan ditangguhkan. Saya tidak berpikir saya pernah benar-benar menggunakan ini dalam beberapa dekade menggunakan BSD Unix.
sumber