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)
试试 fc:
fc -l 4972 5012
Run Code Online (Sandbox Code Playgroud)
...它是一个 bash 内置命令。(所以不要在 tcsh 中尝试:>)