如何获取/过滤特定范围内的历史记录条目?
我有大量的历史文件,并且经常使用
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
。
但通常你不会提前知道确切需要多少行。因此使用 less 并在其中搜索。你甚至可以从命令行启动搜索:
history | less +/somecommand
答案2
尝试 fc:
fc -l 4972 5012
... 它是一个 bash 内置命令。(所以不要在 tcsh 中尝试它:>)
答案3
尝试history | grep -C20 '^4992'