Apakah ada cara yang lebih baik untuk mencari perintah histori file daripada grep? Saya memiliki beberapa gagasan tentang apa perintah dimulai, tetapi saya tidak tahu seberapa jauh ke belakang dalam sejarah itu.
pembaruan: sebelumnya adalah zsh spesifik tetapi karena tumpang tindih jawaban, jangan ragu untuk menjawab untuk semua shell (atau mode (vi / emacs)) di sini, catat apakah itu spesifik.
sumber
<kbd>Ctrl+R</kbd>
. sumber jawabanSaat menggunakan Bash, ketik Control- Rdan kemudian mulai mengetik. Mengetik Control- Rberulang kali setelah memasukkan beberapa teks akan memindahkan Anda kembali ke baris perintah yang cocok.
sumber
Tidak yakin apakah ini akan membantu, tapi saya suka menggunakan ctrl- rdan kemudian mulai mengetik perintah. Itu harus melalui sejarah Anda dan memberi Anda pertandingan pertama. Untuk beralih melalui pertandingan cukup tekan ctrl- rlagi.
sumber
Jika Anda menambahkan yang berikut ke
~/.inputrc
dan mulai ulang Bash, Anda bisa mulai mengetik, lalu gunakan Page Updan Page Downuntuk bergerak maju dan mundur melalui sejarah garis yang dimulai dengan awalan yang sama dengan yang baru saja Anda ketikkan.
(Beberapa mungkin lebih suka menggunakan
\e[A
dan\e[B
, yang akan menggantikan yang normal Updan Downtindakan daripada mengikat kunci baru.)sumber
Alt + Up
danAlt + Down
. Bergantung pada emulasi keyboard, terminal meniru menggunakan kombinasi ini mungkin dipetakan baik ke\E[A
dan\E[A
(misalnya Konsol KDE dengan Linux Key Bindings) atau\E[1;3A
dan\E[1;3B
(mis. Terminal XFCE atau Konsol KDE dengan X Free 4 Bindings).Prompt interaktif yang dipanggil oleh Ctrl- R, yang telah disebutkan sebelumnya, adalah cara yang paling nyaman. Selain itu populer untuk memetakan Updan Downpanah tombol untuk mencari riwayat awalan yang saat ini ada di baris perintah, namun ini memerlukan beberapa perubahan pada
~/.inputrc
file .Solusi klasik dan kurang interaktif adalah dengan menggunakan ekspansi sejarah shell. Mengetik
akan menjalankan perintah terakhir yang dimulai dengan
foo
danakan menjalankan perintah terakhir yang berisi
foo
. Informasi lebih lanjut tentang ekspansi riwayat dapat ditemukan di manual referensi Bash , dengan asumsi shell Anda adalah Bash atau kompatibel.sumber
Jika Anda menambahkan
stty -ixon
ke~/.bashrc
file Anda kemudian Ctrl- sakan pergi ke arah yang berlawanan ke Ctrl- r.sumber
C-s
untuk tujuan ini, tetapi terminal saya membeku ; Waspadalah! (Yah, saya belum pernah mempekerjakan siapa punstty ixon
, tidak yakin untuk apa ini.)C-q
akan "mencairkan". Ini danC-s
merupakan karakter pengontrol aliran perangkat lunak biasa yang dulunya berguna untuk secara manual menyela (menghentikan sementara) aliran output ketika koneksi serial lambat digunakan. Sekarang output sangat cepat dalam banyak kasus sehingga apa yang ingin Anda lihat ketika Anda menekanC-s
sudah digulir oleh.stty -ixon
mematikan kontrol aliran perangkat lunak.Jika Anda mengetik
!ls
maka bash akan memeriksa riwayat Anda dan menjalankan perintah terbaru yang dimulai dengan "ls"sumber
mungkin spesifik zsh. Dalam meneliti jawaban ini saya menemukan
vi-history-search-backward
yang memungkinkan seseorang untuk mencari dengan /dalam mode vi (yang saya tidak menyebutkan saya berada di) Anda kemudian dapat menggunakan ndan Nuntuk mencari maju dan mundur masing-masing (setelah menekan enter).sumber
Saya terkejut ini belum disebutkan - tetapi Anda dapat memilih mode-vi di bash atau ksh dengan melakukan ini:
... atau menggunakan ini sebagai isi
~/.inputrc
(untuk readline GNU yang digunakan dalam program seperti bash):Kemudian setelah itu, Anda dapat menggunakan Escuntuk masuk ke mode perintah dan gunakan kuntuk kembali dalam sejarah, dan juntuk maju. Anda juga dapat mencari menggunakan /untuk mencari secara normal, dan ?untuk mencari secara terbalik.
Jika Anda menggunakan
~/.inputrc
, maka ini akan bekerja tidak hanya di GNU bash tetapi dalam apa pun yang menggunakan readline GNU seperti CLISP dan mungkin program seperti shell perintah MySQL dan seperti shell CPAN.sumber
Untuk beralih ke depan saat menggunakan pencarian terbalik (dengan perintah Ctrl-R):
Buka file .bashrc Anda:
sudo gedit ~/.bashrc
tambahkan baris ini (huruf "f" dapat diganti dengan yang lain yang belum digunakan oleh sistem)
source ~/.bashrc
atau. ~/.bashrc
SEKARANG ANDA BISA PINDAHKAN MAJU DALAM SEJARAH DENGAN SINGKAT: Ctrl + f
Bekerja di Ubuntu 18,04 LTS
sumber
Saya menggunakan mengikuti dua sebagian besar waktu.
Tetapi harap perhatikan keduanya mencari chars mulai.
fc -e - <SPACE>
<first few char for your previous >
ini akan menjalankan perintah terakhir yang cocok dengan urutan itu.Saya tidak dapat menemukan sesuatu seperti Ctrl+ Rdi Bash untuk ksh dan tcsh saya.
sumber
set -o emacs
Omong-omong, ini dalam mode.Ada cara untuk menggunakan Ctrl- Rdengan tcsh . Tambahkan yang berikut ini di
~/.cshrc
:bindkey "^r" i-search-back
(itu hanya tanda tanda dan huruf r)Itu penghemat waktu terbesar bagi saya.
sumber
jawaban yang mirip dengan @ephemient, tetapi Anda dapat memasukkan .bashrc Anda
dan ketik bagian dari frasa, dan kemudian gunakan panah atas / bawah untuk menelusuri opsi terbaru yang cocok. Ini adalah perilaku default matlab.
Bagi kebanyakan orang, jika Anda ingin mem-porting pengaturan Anda ke sistem baru, lebih mudah untuk mengingat untuk merobek hanya Anda
~/.bashrc
maka Anda harus merobek itu~/.inputrc
sumber
Ya itu ada, setidaknya jika Anda menggunakan zsh. Mulailah mengetik perintah dan kemudian tekan M-p( ESC p) dan itu akan menemukan perintah sebelumnya yang cocok dengan apa yang Anda ketikkan. Tekan lagi untuk menemukan kecocokan berikutnya.
sumber