如何获得Bash Shell历史记录范围


9

如何获取/过滤特定范围内的历史记录条目?

我的历史记录文件很大,经常使用

history | grep somecommand

现在,我的记忆力很差,我还想看看在输入命令前后我还做了些什么。

现在我这样做:得到比赛4992 somecommand,然后说,然后我

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

通常这已经足够好了,但是我宁愿做得更精确,那就是看到从4972到5012的命令,即之前的20条命令和之后的20条命令。

我想知道是否有更简单的方法?我怀疑自定义脚本是正确的,但是也许其他人以前做过类似的事情。


对于历史记录操作,有2个内置控件
LAFK说,莫妮卡(Monica)

Answers:


13

您可以告诉grep打印比赛周围的一些行,例如,在比赛之前3场,在比赛之后5场:

history | grep -B 3 -A 5 somecommand

grep -C 4等同于grep -A 4 -B 4

但是通常您不会确切地知道要提前多少行。因此,请少用并在其中搜索。您甚至可以从命令行启动搜索:

history | less +/somecommand

1
很酷的把戏less!不知道您能做到这一点
沃伦(Warren)2010年

确实非常好……即使我不是真的在特别寻找它,我也可以看到正在寻找的命令“周围”,但是我记得当我使用另一个相关命令时会使用它!好东西TNX。
Khalil Gharbaoui

8

尝试fc:

fc -l 4972 5012

...这是一个bash内置命令。(所以不要在tcsh中尝试它:>)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.