如何取得 Bash shell 歷史範圍

如何取得 Bash shell 歷史範圍

如何取得/過濾特定範圍內的歷史條目?

我有一個很大的歷史文件並且經常使用

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'

相關內容