如何浏览特定行号之间的 bash 历史记录

如何浏览特定行号之间的 bash 历史记录

每次我需要这个的时候,我都会花 10 分钟在 Google 上搜索。我不知道如何更好地表达这一点,但我需要检索某些行之间的 bash 历史记录,例如:

$ history --start 321 --end 456
#to retrieve history from 321 and to 456

答案1

你可以使用类似

history | grep -A 135 -w 321

它从第 321 行开始并显示接下来的 135 行,因此它将显示第 321 行到第 456 行。

答案2

使用尾巴

history | head -n 456 | tail -n 136

这将获取前 456 个(直到您想要的结尾),然后获取最后 136 个(计算为 456 - 136 = 320,但将从历史记录中的第 321 条记录中获取)。

答案3

我假设您指的是命令编号而不是行号。我会使用sed来获取文件中两个命令编号之间的行。

$ history | sed -n '/^ 321 /,/^ 456 /p'

^字符匹配行首。数字后还有一个空格,以确保^ 321不匹配等于32155 ls

答案4

最优雅的方法是使用 sed 的 print (p) 命令和地址范围

history | sed -n '321,456p'

来自 sed(1p) 手册页:

-n 标志禁止默认输出(其中每一行在经过编辑检查后,都写入标准输出)。仅会写入明确选择用于输出的行。

相关内容