Cari perintah dalam riwayat dengan kata kunci tidak terputus

12

Saya bertanya-tanya bagaimana cara mencari perintah dalam sejarah tanpa mengetahui beberapa huruf pertama dari perintah?

Saat mencari menggunakan Ctrl- Rdalam bash, kita harus memberikan beberapa huruf pertama dari perintah. Bagaimana jika saya hanya mengenal beberapa karakter di tengah, atau beberapa di awal dan beberapa di tengah?

Misalnya, untuk mencari cat myfile, saya hanya tahu ada atdi dalamnya, atau cdi awal dan mydi tengah suatu tempat. kata kunci harus selalu diposisikan. Misalnya, dalam cat myfile, saya ingin mencari keduanya cdan my, tetapi Ctrl+Rtidak akan mengizinkan untuk menentukan keduanya secara bersamaan.

Tim
sumber
2
Saya menggunakan Ctrl-R sepanjang waktu dan mencari teks tengah secara otomatis. Tidak ada yang mewah, tetapi dalam contoh Anda mengetik saja mysudah cukup. RHEL4 dan Cygwin dikonfirmasi.
Aaron D. Marasco
@ Tim: Anda tidak benar-benar mencobanya, bukan? Karena memang mencari huruf di tengah-tengah perintah.
alex
@alex: Saya sebenarnya ingin mengatakan kata kunci yang tidak diposisikan secara terus-menerus. Misalnya, dalam cat myfile, saya ingin mencari keduanya cdan my, tetapi Ctrl + R tidak akan mengizinkan untuk menentukan keduanya secara bersamaan.
Tim

Jawaban:

12

Jika Anda hanya mencari untuk menemukan garis (untuk joging ingatan Anda), Anda bisa mengambil bagian dari perintah yang Anda ingat:

history | grep "substring"
jasonwryan
sumber
2
Bagaimana mungkin saya telah menggunakan sistem * nix selama 5+ tahun dan tidak tahu tentang historyperintah sampai sekarang? Terima kasih!
GMA
7

Bash hanya memiliki pencarian string sederhana, sejauh yang saya bisa lihat.

Pertimbangkan beralih ke zsh , yang memiliki penelusuran wildcard riwayat. history-incremental-pattern-search-backwarddan history-incremental-pattern-search-forwardtidak terikat pada kunci secara default, tetapi Anda dapat mengikatnya:

bindkey '^X^R' history-incremental-pattern-search-backward
bindkey '^X^S' history-incremental-pattern-search-forward

Kemudian ketik Ctrl+X Ctrl+R ^c*my.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
0

Apropos (1) juga harus mengembalikan seorang pria untuk subjek tersebut jika pria tersebut mengandung kata itu. Whatis (1) hanya mengembalikan kecocokan mutlak.

Untuk referensi: Apropos == man -k Whatis == man -f

Keduanya harus sangat membantu, bersama dengan wildcard * dan?

baweaver
sumber
1
Pertanyaannya adalah tentang mencari melalui histori perintah di terminal ... (tidak mencari halaman manual) ... tetapi pada catatan yang sepenuhnya terpisah, saya menemukan jawaban Anda berguna, jadi +1 :)
Peter.O
.... Ah sayang, salahku pada teman satu itu.
baweaver