Jawaban:
Tekan Ctrl+ Rdan ketik ssh
. Ctrl+ Rakan memulai pencarian dari perintah terbaru ke yang lama (pencarian terbalik). Jika Anda memiliki lebih dari satu perintah yang dimulai dengan ssh
, Tekan Ctrl+ Rlagi dan lagi hingga Anda menemukan kecocokan.
Setelah menemukan kecocokan, Anda dapat menekan Enteruntuk menjalankan perintah atau kursor kiri / kanan untuk hanya memilih teks perintah.
Tidak ada opsi membalikkan default untuk Ctrl+ Runtuk membalikkan arah pencarian tetapi di sini Anda akan menemukan beberapa saran tentang itu.
Saya melakukan sedikit variasi di atas, bekerja dengan baik untuk saya (jika Anda mengacu pada sejarah bash Anda
Di folder rumah saya, saya membuat file bernama
.inputrc
Di dalam pergi ini
"\e[5~": history-search-backward
"\e[6~": history-search-forward
Catatan: di atas sepertinya tidak berfungsi lagi di 14.04 jadi ini melakukan hal yang sama -
"\e[A":history-search-backward
"\e[B":history-search-forward
Kemudian mengetik banyak dari perintah sebelumnya saya ingin & menggunakan tombol halaman atas / halaman dn mencari sejarah, selalu dimulai dengan halaman atas
Berikut adalah metode lain menggunakan perintah klasik (lebih cenderung bekerja lintas distro). Command history disimpan dalam file .bash_history
di direktori home Anda, sehingga Anda dapat melakukan ini:
grep "ssh" ~/.bash_history
Jangan lupa -i
benderanya jika Anda membutuhkan pencarian case-sensitive.
history | grep ssh
hanya akan menunjukkan sesi sementara ssh jadi saya akan pergi untuk jawaban ini.
Saya menemukan fungsi berikut di suatu tempat di Internet dan telah menggunakannya dengan sangat baik. Letakkan ini di ~/.bashrc
:
hgrep () {
history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}
Sekarang kembali memuat shell Anda: exec bash
. Anda sekarang memiliki perintah baru, yang dapat Anda gunakan seperti ini:
hgrep ssh
Ini akan menampilkan daftar perintah yang cocok dari riwayat Anda. Untuk menjalankan perintah, ketik !
diikuti dengan nomor perintah. Ini sebuah contoh:
~:$ hgrep scp
207 tn scp foreign-teachers __HOST__:unity.log __HOST__:compiz.log .
421 tn scp scott-laptop __HOST__:Scott\ Severance.asc .
422 tn scp scott-laptop __HOST__:'Scott\ Severance.asc' .
468 tn scott-desktop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
469 tn scott-laptop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
470 scp -r Backgrounds/* 192.168.1.2:Pictures/Backgrounds
~:$ !207
Saya menyukai pendekatan ini lebih baik daripada Ctrl+ Rkarena memungkinkan pencarian yang jauh lebih fleksibel, dan saya dapat melihat banyak hasil sekaligus.
Jika Anda menggunakan shell di Emacs ( M-x shell
), Anda dapat menggunakan M-r
(itu sama dengan Ctrl+ Rdi terminal ).
Riwayatnya baik tetapi terbatas - Saya lebih suka mengatur lingkungan bash saya sehingga saya mencatat semua perintah yang pernah saya jalankan, selain direktori tempat mereka dijalankan. Lalu saya menjalankan perintah untuk mendaftar semua perintah Saya telah menjalankan di direktori saat ini, yang saya dapat pipa untuk grep dll - itu disebut 'piring' lihat:
https://github.com/wolfwoolford/dish
Jika Anda ingin memotong ke pengejaran, cukup masukkan ini di .bashrc Anda ( https://github.com/wolfwoolford/dish/blob/master/dishrc )
Ada juga perintah yang sangat berguna yang Anda dapatkan secara gratis yang disebut 'dishg' - atau hidangan global - yang mencetak setiap perintah yang pernah dijalankan, terlepas dari direktori. Jelas ini hanya berguna ketika digunakan dengan grep dan ekor dll ...
Saya telah menggunakannya selama bertahun-tahun dan ini benar-benar hal pertama yang saya instal setiap kali saya menyiapkan kotak baru. Log perintah yang Anda jalankan ke file teks dalam direktori tersembunyi (~ / .dish) .. Saya tidak pernah memiliki masalah dengan ruang disk ...
Ingin menulis ini sebagai komentar untuk @ssmy tetapi tidak dapat memformat dalam komentar untuk bekerja sama.
Setelah mencari melalui sejarah dengan history | grep ssh
Anda kemudian dapat menjalankan perintah yang Anda inginkan dengan mengetikkan nomor yang diawali dengan tanda seru, misalnya !42
.
Contoh:
$ sejarah | grep ssh 5 ssh me@someserver.net 13 ssh me@someotherserver.net 42 ssh me@thisone.com $! 42