
如何取得/過濾特定範圍內的歷史條目?
我有一個很大的歷史文件並且經常使用
history | grep somecommand
現在,我的記憶力很差,我還想看看在我輸入指令的時候我還做了什麼。
現在我這樣做:得到匹配,說4992 somecommand
,然後我做
history | grep 49[0-9][0-9]
這通常已經足夠好了,但我寧願做得更精確,即查看從 4972 到 5012 的命令,即之前 20 個命令和之後 20 個命令。
我想知道是否有更簡單的方法?我懷疑,自訂腳本是合適的,但也許其他人以前做過類似的事情。
答案1
您可以告訴grep
列印符合項目周圍的一些行,例如,之前 3 行和之後 5 行:
history | grep -B 3 -A 5 somecommand
grep -C 4
相當於grep -A 4 -B 4
.
但通常您不會提前準確知道需要多少行。所以少用並在裡面搜尋。您甚至可以從命令列啟動搜尋:
history | less +/somecommand
答案2
嘗試FC:
fc -l 4972 5012
...這是一個 bash 內建指令。 (所以不要在 tcsh 中嘗試:>)
答案3
嘗試history | grep -C20 '^4992'