Cara mendapatkan rentang riwayat Bash shell


9

Bagaimana saya bisa mendapatkan / memfilter entri riwayat dalam rentang tertentu?

Saya memiliki file riwayat yang besar dan sering digunakan

history | grep somecommand

Sekarang, ingatan saya sangat buruk dan saya juga ingin melihat apa lagi yang saya lakukan sekitar waktu saya memasukkan perintah.

Untuk saat ini saya melakukan ini: dapatkan kecocokan, katakanlah 4992 somecommand, maka saya lakukan

history | grep 49[0-9][0-9]

ini biasanya cukup baik, tetapi saya lebih suka melakukannya lebih tepatnya, yaitu melihat perintah dari 4972 hingga 5012, yaitu 20 perintah sebelum dan 20 sesudahnya.

Saya bertanya-tanya apakah ada cara yang lebih mudah? Saya menduga, skrip khusus sudah beres, tetapi mungkin orang lain telah melakukan hal serupa sebelumnya.


Jawaban:


13

Anda dapat meminta grepuntuk mencetak beberapa baris di sekitar pertandingan, misalnya 3 sebelum dan 5 setelah:

history | grep -B 3 -A 5 somecommand

grep -C 4setara dengan grep -A 4 -B 4.

Tetapi seringkali Anda tidak akan tahu persis berapa banyak garis yang Anda inginkan sebelumnya. Jadi, gunakan lebih sedikit dan cari di dalamnya. Anda bahkan dapat meluncurkan pencarian dari baris perintah:

history | less +/somecommand

1
trik yang sangat keren less! Tidak tahu Anda bisa melakukan itu
warren

Sangat bagus memang ... Saya bisa melihat "sekitar" perintah yang saya cari, bahkan ketika saya tidak benar-benar mencarinya secara khusus tetapi saya ingat menggunakannya ketika saya menggunakan perintah lain yang relevan! Barang bagus tnx.
Khalil Gharbaoui

8

Coba fc:

fc -l 4972 5012

... itu adalah perintah bash builtin. (jadi jangan mencobanya di tcsh:>)


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.