如何获取 Bash shell 历史记录范围

Ani*_*iti 9 linux bash history grep

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

我有一个很大的历史文件并且经常使用

history | grep somecommand

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

现在我这样做:得到匹配,说4992 somecommand,然后我做

history | grep 49[0-9][0-9]
Run Code Online (Sandbox Code Playgroud)

这通常已经足够了,但我更愿意做得更精确,即查看从 4972 到 5012 的命令,即之前的 20 个命令和之后的 20 个命令。

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

Gil*_*il' 13

您可以告诉grep在匹配周围打印一些行,例如,前 3 行和后 5 行:

history | grep -B 3 -A 5 somecommand
Run Code Online (Sandbox Code Playgroud)

grep -C 4相当于grep -A 4 -B 4

但通常您不会提前确切地知道您想要多少行。所以少用,在里面搜索。您甚至可以从命令行启动搜索:

history | less +/somecommand
Run Code Online (Sandbox Code Playgroud)


Ron*_*ndo 8

试试 fc:

fc -l 4972 5012
Run Code Online (Sandbox Code Playgroud)

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