Penyelesaian baris perintah dari riwayat perintah

85

Jadi, saya telah melihat sejarah dan Ctrl+ R, tetapi mereka bukan apa yang saya pikir saya tahu. Apakah ada cara yang bisa saya ketik di awal perintah, dan siklus pertandingan yang sesuai dalam sejarah saya dengan beberapa shortcut bash?

# mysq(some shortcut key)

Memberi saya:

# mysqldump  --add-drop-table -e -q -n -C -u 
(some shortcut key)
#  mysql -u ben.dauphinee -p
Ben Dauphinee
sumber
Catatan: Ada '<kbd> Alt + Tab </kbd>' untuk tty's tanpa desktop.
neverMind9

Jawaban:

91

Menekan Ctrl+ Rakan membuka pencarian riwayat terbalik. Sekarang mulailah mengetik perintah Anda, ini akan memberikan kecocokan pertama. Dengan menekan Ctrl+ Rlagi (dan lagi) Anda dapat menelusuri sejarah.

mysq(Ctrl+R)

Akan memberi:

mysqldump  --add-drop-table -e -q -n -C -u 

Ctrl+ Rlagi:

mysql -u ben.dauphinee -p
mengibaskan
sumber
5
Terima kasih. Juga, Esc akan menempatkan perintah yang dipilih di baris perintah Anda tanpa mengeksekusi, sementara Enter akan menjalankan perintah yang dipilih.
Ben Dauphinee
3
Saya menemukan CTRL + E lebih baik untuk ini daripada ESC, karena melarikan diri adalah canggung untuk meraih tetapi saya sudah memukul CTRL + R, jadi E ada di sana. Ini juga menempatkan kursor pada akhir baris, yang berguna jika saya ingin mengubah sesuatu (seperti nama file) yang saya temukan menjadi kasus umum.
Sorpigal
Sayangnya, itu tidak berfungsi pada Cygwin
ATorras
2
Pada mac, setidaknya, tampaknya mysq(CTRL+R)(CTRL+R)tidak menggilir perintah yang dimulai dengan "mysq". Yang perlu Anda lakukan (CTRL+R)mysq(CTRL+R)sebagai gantinya
BlueRaja - Danny Pflughoeft
62

Untuk memperluas apa yang dikatakan Gilles, saya memiliki yang berikut .inputrcuntuk mengikat tombol panah naik / turun ke history-search-backwarddan history-search-forward:

# Key bindings, up/down arrow searches through history
"\e[A": history-search-backward
"\e[B": history-search-forward
"\eOA": history-search-backward
"\eOB": history-search-forward

Cukup ketikkan sesuatu (opsional), lalu tekan tombol panah atas / bawah untuk mencari riwayat untuk perintah yang dimulai dengan apa yang Anda ketikkan.

Untuk melakukan ini .bashrcdaripada .inputrc, Anda dapat menggunakan:

bind '"\e[A": history-search-backward'
raychi
sumber
3
mengikat itu milik ~ / .inputrc ... terima kasih telah mendukung kemalasan saya
Martin Zeitler
Perlu dicatat bahwa '\ e' sangat penting, setidaknya untuk debutan bash. Cukup mengetik Ctrl-V untuk mendapatkan penekanan tombol untuk perintah Anda tidak menceritakan keseluruhan cerita. Misalnya, mengetikkan Ctrl-V Meta-P (yaitu) Alt-P) mengembalikan ^ [p - untuk mendapatkan perilaku yang Anda inginkan, ganti "^ [" dengan '\ e'.
MrMas
Setuju dengan @syslogic - masukkan baris dalam .inputrc dan lepaskan bind dan tanda kutip tunggal.
MrMas
salin-tempel ini ke .inputrc di osx, saya dapatkan: source ~ / .inputrc -bash: \ e [A :: perintah tidak ditemukan -bash: \ e [B :: perintah tidak ditemukan -bash: \ eOA :: perintah not found -bash: \ eOB :: command not found
Walrus the Cat
1
Lihat superuser.com/questions/241187/how-do-i-reload-inputrc . Anda tidak dapat sumber file.
raychi
7

Anda juga dapat menekan PAGEUPtombol untuk melengkapi perintah secara otomatis. Ini pada dasarnya mencari bash_historyfile.

0aslam0
sumber
Anda harus menghapus tanda komentar dua baris /etc/inputrcatau menambahkan dua baris ini ke $HOME/.inputrcfile Anda : "\e[5~": history-search-backward "\e[6~": history-search-forward
garlix
5

Anda dapat menggunakan perintah readline history-search-backwarddan history-search-forwarduntuk bernavigasi di antara baris perintah yang dimulai dengan awalan yang sudah Anda ketik. Tidak satu pun dari perintah ini terikat pada kunci dalam konfigurasi default.

Zsh (zle) memiliki perintah serupa history-beginning-search-backwarddan history-beginning-search-forward, juga tidak terikat pada tombol secara default. Ada juga history-search-backwarddan history-search-forward, yang menggunakan kata pertama dari perintah saat ini sebagai awalan untuk mencari terlepas dari posisi kursor.

Gilles
sumber
4

Jika Anda ingin ikhtisar yang baik dari perintah yang sangat mirip, Anda bisa mendapatkan daftar dengan:

history|grep KEYSTRING

Kemudian salin dan tempel dengan tombol tengah mouse Anda.

Rgds - Joe

joe_zeroh
sumber