如何获取 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

但通常你不会提前知道确切需要多少行。因此使用 less 并在其中搜索。你甚至可以从命令行启动搜索:

history | less +/somecommand

答案2

尝试 fc:

fc -l 4972 5012

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

答案3

尝试history | grep -C20 '^4992'

相关内容