2

我经常grep通过我的 bash shell 历史来查找旧命令、文件路径等。在确定了感兴趣的历史编号后,我希望在任一侧查看几行上下文,即查看历史行的子集。例如:

$ history | grep ifconfig

8408  ifconfig eth0
8572  sudo ifconfig eth0 down

我想看看 8572 行两侧的 5 行左右。显然知道我可以用 来翻阅历史记录的行号less,但这似乎很愚蠢。据我所知,联机帮助页似乎也没有这些信息。

有没有一种简单的方法可以在 bash 中检索任意历史记录行?

4

6 回答 6

5

grep 的 -C 选项提供上下文。尝试:

$ history | grep -C 5 ifconfig
于 2009-08-22T16:58:32.073 回答
4
history | grep -C 5 ifconfig
于 2009-08-22T16:57:38.910 回答
3

如果您只想查看特定行号,您也可以使用类似这样的东西

history | head -n 120 | tail -n 5

该示例打印第 116 到 120 行。

于 2009-08-22T19:14:52.657 回答
2
history | grep ifconfig -A5 -B5

A = grep 找到的匹配之后的行数 B = grep 找到的匹配之前的行数 您还可以将行数从 5 更改为您想要的任何数字。

于 2009-08-22T18:01:01.543 回答
1

输入 ctrl-r,然后输入一些字符(交互式搜索)。更多信息在这里

于 2009-08-22T16:45:38.480 回答
1

我打字
history | grep " 840"

于 2009-08-22T17:04:19.753 回答