GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Agar Type-ahead Terapkan Ke Bash History Search (ctrl-r)?

Konteks

Ketik di bash:bagus

Saat bash shell sibuk (menginisialisasi, menjalankan perintah), seseorang dapat mengetik sebelum prompt berikutnya muncul .

Jika shell telah meluncurkan sebuah program, program itu akan menangkap kuncinya, tetapi jika tidak ada program yang dijalankan atau jika program tidak menangkap input, jenis apa yang akan dimasukkan ke dalam shell setelah prompt muncul.

Contoh :ketik sleep 5 , tekan Enter, lalu ketik ls dan tekan Enter. ls akan dijalankan setelah tidur selesai. Dalam kehidupan nyata, ls akan diganti dengan cp , rsync atau banyak program lainnya.
Ini adalah fitur tipikal Typeahead dan sangat menghemat waktu jika Anda tahu sebelumnya apa yang harus diketik.

Ini juga sangat bagus karena memungkinkan untuk menyalin-menempelkan beberapa perintah dan menjalankannya secara berurutan.

Kasus penggunaan dunia nyata termasuk ketika shell membutuhkan waktu untuk menginisialisasi. Bisa jadi komputer melambat karena alasan apa pun, atau shell berada di tautan jaringan yang lambat, dll.

Pencarian riwayat di bash:bagus

Pada prompt bash, seseorang dapat mengetik Ctrl-R untuk menelusuri sejarah.

Ini adalah penghemat waktu yang sangat berharga ketika menggunakan kembali beberapa baris perintah lama, atau bahkan urutan baris perintah. Tekan Ctrl-R , ketik beberapa karakter khas dari perintah untuk mencari, tekan Ctrl-O sebanyak yang diperlukan untuk memutar ulang perintah yang direkam dari sana.

Ketik di penelusuran riwayat:bagaimana caranya?

Namun, ada satu batasan. Seringkali saya menggunakan urutan di atas dan menemukan bahwa jika saya mengetik mis. Ctrl-R ls sebelum prompt shell benar-benar muncul, Ctrl-R bagian diabaikan tetapi ls bagian ditampilkan.

Efek bersihnya adalah kita harus menunggu prompt shell muncul sebelum mengetik Ctrl-R , mengalahkan sebagian waktu yang dihemat.

Pertanyaan

Apakah ada cara untuk memiliki Ctrl-R dihormati bahkan dalam situasi typeahead?

Jawaban yang Diterima:

Ctrl . Anda –r sedang dicegat oleh mesin pemrosesan baris cookie terminal berbasis kernel.

Saat sleep sedang berjalan, terminal dalam mode dimasak, yang berarti bahwa editor baris tty berbasis kernel berfungsi. Editor baris tty mendukung pengeditan baris perintah dasar. Tombol hapus (biasanya disetel ke Ctrlh (spasi mundur) atau Del ) dan tombol pemutus (biasanya Ctrl-U ) adalah tombol pengeditan khusus yang paling terkenal yang dapat digunakan dalam mode ini. Editor baris ini berguna:yang memungkinkan utilitas interaktif yang tidak menggunakan readline atau pun kutukan untuk membaca baris input lengkap dari terminal sambil memungkinkan pengguna melakukan koreksi pengetikan.

Terkait:Bagaimana cara mencari database MySQL dengan bidang terenkripsi?

Tetapi ada kunci khusus lain yang aktif dalam mode ini. Anda dapat melihatnya bersama dengan pengaturan kunci lainnya di output stty -a dengan nama rprnt dan pengaturan defaultnya adalah ... Anda dapat menebaknya ... Ctrlr . Fungsi tombol ini adalah untuk mengecat ulang baris perintah saat ini, untuk berjaga-jaga jika baris tersebut rusak atau tidak sejajar karena keluaran terminal lainnya.

Untuk menghindarinya, Anda dapat menonaktifkan fungsi tersebut dengan stty rprnt undef .

Secara pribadi saya sudah terbiasa dengan Ctrlr ditafsirkan sebagai perintah pengecatan ulang dan saya terkejut setiap kali saya mencoba melakukannya di bash dan melakukan sesuatu yang berbeda!


Linux
  1. Cara Mengonfigurasi Bash Shell Terbatas di Linux

  2. Cara menonaktifkan pengeditan riwayat saya di bash

  3. Bagaimana caranya:Riwayat Bash/Shell yang tidak terbatas?

  1. Cara menggunakan perintah riwayat Bash

  2. Cara Menghapus Riwayat Baris Perintah BASH di Linux

  3. Bagaimana cara menjalankan perintah berkali-kali, menggunakan bash Shell?

  1. Cara Menghapus Riwayat Bash di Linux

  2. Cara Menghapus Perintah Tertentu Dari Riwayat Bash Di Linux

  3. Bagaimana Cara Menjalankan Perintah di Shell Tanpa Menyimpannya ke Riwayat? [Kiat Linux]