Pertanyaan Bagaimana cara mencari riwayat baris perintah saya untuk perintah yang saya gunakan sebelumnya?


Selain melihat sejarah, adakah cara untuk memfilter riwayat saya?

Katakanlah saya ingin mencari perintah yang dimulai dengan "ssh"?


148
2017-11-02 01:25


asal




Jawaban:


tekan Ctrl+R dan ketik ssh. Ctrl+R akan memulai pencarian dari perintah terbaru ke yang lama (pencarian terbalik). Jika Anda memiliki lebih dari satu perintah yang dimulai dengan ssh, Tekan Ctrl+R lagi dan lagi sampai Anda menemukan pertandingan.

Setelah Anda menemukan pertandingan, Anda dapat menekan Memasukkan untuk menjalankan perintah atau kursor kiri / kanan untuk hanya memilih teks perintah.

Tidak ada opsi reverse default untuk Ctrl+R untuk membalikkan arah pencarian tetapi sini Anda akan menemukan beberapa saran tentang itu.


230
2017-11-02 01:32





Jika Anda hanya ingin mencari sejarah Anda, Anda bisa menggunakan history | grep ssh, mengganti ssh untuk apa pun yang ingin Anda cari.


76
2017-11-02 01:36



Saya menggunakan metode ini, karena saya menautkan untuk melihat di daftar setiap perintah yang cocok dengan filter saya. - Pisu


Mendesak Ctrl+R akan memulai mode "reverse-i-search", mengetik "ssh" akan mencari sejarah Anda untuk perintah yang mengandung "ssh".


13
2017-11-02 01:33





Saya melakukan sedikit variasi di atas, bekerja dengan baik untuk saya (jika Anda mengacu pada riwayat 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 mengetikkan banyak perintah sebelumnya yang saya inginkan & menggunakan tombol halaman atas / halaman dan menelusuri sejarah, selalu dimulai dengan halaman atas


13
2017-11-02 01:42



jika Anda memiliki permisions root, Anda dapat mengedit / etc / inputrc soo ini akan bekerja untuk semua pengguna. - Wolfy
@doug, hmm .. saya sudah Ubuntu 15.04. Solusi ini berfungsi tetapi mengacaukan Ctrl + LeftArrow / Ctrl + tombol RightArrow. Masalah tampak seperti dengan membuat file .inputrc dan tidak dengan entri di dalamnya. - Ravi
Jangan lupa untuk me-rebind .inputrc atau tutup terminal - David Brossard


Berikut metode lain menggunakan perintah klasik (lebih mungkin untuk bekerja di seluruh distro). Sejarah perintah disimpan dalam file .bash_history di direktori home Anda, sehingga Anda dapat melakukan ini:

grep "ssh" ~/.bash_history

Jangan lupakan itu -i Tandai jika Anda perlu pencarian tidak peka huruf besar-kecil.


5
2017-11-02 09:49





Saya menemukan fungsi berikut di suatu tempat di Internet dan menggunakannya dengan sangat efektif. Masukkan ini ke dalam Anda ~/.bashrc:

hgrep () { 
    history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}

Sekarang, muat kembali 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 oleh nomor perintah. Inilah contohnya:

~:$ 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 lebih menyukai pendekatan ini daripada Ctrl+R karena memungkinkan penelusuran yang jauh lebih fleksibel, dan saya dapat melihat banyak hasil sekaligus.


2
2017-11-09 03:14





Masukkan ini ke dalam Anda ~/.bashrc :

alias hgrep = 'history | grep --color = auto '

contoh:


2
2017-10-15 10:59





Jika Anda menggunakan shell dalam Emacs (M-x shell) Kamu dapat memakai M-r (Itu setara dengan Ctrl+R di terminal).


1
2017-08-26 15:33





Sejarah itu bagus tapi terbatas - Saya lebih suka mengatur lingkungan bash saya sehingga saya log semua perintah yang pernah saya jalankan, selain direktori tempat mereka dijalankan. Kemudian saya menjalankan perintah untuk mendaftarkan semua perintah yang telah saya jalankan di direktori saat ini, yang dapat saya salurkan ke grep dll - ini disebut ' hidangan 'lihat:

https://github.com/wolfwoolford/dish

Jika Anda ingin memotong ke pengejaran, cukup sumber ini di .bashrc Anda (https://github.com/wolfwoolford/dish/blob/master/dishrc)

Ada juga perintah yang benar-benar berguna yang Anda dapatkan secara gratis disebut 'dishg' - atau hidangan global - yang mencetak setiap perintah yang pernah dijalankan, terlepas dari direktori. Tentunya yang ini hanya berguna ketika digunakan dengan grep dan tail dll ...

Saya telah menggunakannya selama bertahun-tahun dan itu benar-benar hal pertama yang saya pasang setiap kali saya menyiapkan kotak baru. Ini log perintah yang Anda jalankan ke file teks dalam direktori tersembunyi (~ / .dish) .. Saya tidak pernah punya masalah dengan ruang disk ...


1
2017-08-25 23:53





Ingin menulis ini sebagai komentar @saya tetapi tidak dapat memformat komentar untuk bekerja sama.

Setelah menelusuri riwayat dengan history | grep ssh Anda kemudian dapat menjalankan perintah yang Anda inginkan dengan mengetikkan nomornya dengan tanda seru, mis. !42.

Contoh:

$ sejarah | grep ssh
  5 ssh me@someserver.net
 13 ssh me@someotherserver.net
 42 ssh aku@thisone.com
$! 42

0
2018-01-31 21:12