The history
perintah daftar semua sejarah untuk sesi saat ini. Seperti:
1 ls
2 cd /root
3 mkdir something
4 cd something
5 touch afile
6 ls
7 cd ..
8 rm something/afile
9 cd ..
10 ls
11 history
Untuk mencari item yang menarik, saya dapat mengirim history
dengan grep
suka
history | grep ls
1 ls
6 ls
10 ls
Saya juga dapat melihat 3 perintah terakhir seperti:
history 3
11 history
12 history | grep ls
13 history 3
Tetapi bagaimana saya mendapatkan rentang sejarah tertentu? Misalnya sesuatu seperti:
history range 4 7
4 cd something
5 touch afile
6 ls
7 cd ..
bash
command-history
Slartibartfast
sumber
sumber
x
perintah terakhir lalu pipa kehead
.history | grep something
menunjukkan hasil perintah bernomor123 234 345
dalam sejarah dan saya mungkin tidak tahu jumlah perintah terakhir yang dieksekusi (history
dalam kasus ini). Perintah terakhir saya bisa berjumlah 400, 500 atau apa pun. Jadi pertama saya harus memeriksa nomor itu, mencari tahu perbedaannya, daftarx
perintah terakhir dan kemudian pipa kehead
Jawaban:
Alih-alih
history
, Anda dapat menggunakanfc
, yang memungkinkan Anda memilih rentang:sumber
fc -l -16 -10
.Jika Anda harus menggunakan perintah histori, kirimkan melalui sed atau awk:
Kalau tidak, jawaban cuonglm adalah pilihan yang lebih baik.
sumber
head
dantail
akan menyelesaikan masalah ini dengan cara yang bahkan kurang elegan. Untuk rentang 10-> 25 Anda harus menggunakanhistory | head 25 | tail 15
.Menggunakan sejarah dengan grep pada nomor baris di sekitar perintah saya sedang mencari yang terbaik untuk saya.
Misalnya saya mencari apa yang saya lakukan sekitar
ping mybox
, kurang lebih 20 baris.$ history | grep "ping mybox" 20325 ping mybox
Itu garis
20325
jadi saya hanya perlu memahami garis yang dimulai dengan angka dalam[20320..20339]
kisaran.$ history | grep ^203[2-3][0-9]
sumber