Duck Asked: 2019-02-04 00:12:45 +0800 CST2019-02-04 00:12:45 +0800 CST 2019-02-04 00:12:45 +0800 CST 如何在 Bash 历史记录中找到一个条目 [重复] 772 当我打开 bash 并按向上箭头时,我看到了我输入的最后一个命令。继续按向上箭头将显示过去键入的一系列命令。 如何从该列表中找到一个特定命令,而不必按向上箭头 n 次? bash 5 个回答 Voted Best Answer finswimmer 2019-02-04T00:17:50+08:002019-02-04T00:17:50+08:00 按CTRL+R并开始输入。再次按下CTRL+R以找到下一个。 Praveen Kumar BS 2019-02-04T01:41:22+08:002019-02-04T01:41:22+08:00 您可以使用以下命令在 .bash_history 文件中查找 sed -n '/commandwhichyouwanttosearch/p' bash.history 例子 假设你想在 .bash_history 中搜索 ls 命令 history | sed -n '/ls/p' ctrl-alt-delor 2019-02-04T05:57:36+08:002019-02-04T05:57:36+08:00 这个还没有被提及。 !start-of-command 例如 echo hello ls !echo #finds echo hello Kusalananda 2019-02-04T01:14:38+08:002019-02-04T01:14:38+08:00 UpArrow而不是精确地按下n时间,你会使用 !-n 在外壳中。 这将调用bashshell 的历史扩展工具,并用返回历史的命令步骤替换扩展n(并执行它)。 例子: $ history 1 ls 2 ls 3 ls 4 history 5 echo hello 6 echo good night 7 history $ !-3 echo hello hello 请参阅手册中的“历史扩展”部分bash。 DevilaN 2019-02-04T01:57:29+08:002019-02-04T01:57:29+08:00 history + grep(或任何其他文本搜索命令) 如果要列出所有包含字符串“foo”的历史条目: history | grep "foo" history- 显示历史缓冲区中的所有命令 grep "foo"- 搜索包含字符串的行foo,您也可以根据 grep 手册使用正则表达式。 反向搜索 如果你想回顾历史(就像你以前用箭头键做的那样)使用 ctrl+r 是要走的路。只需按 ctrl+r 并开始输入。当短语已经输入时,您可以按 ctrl+r 多次,它将遍历匹配的历史条目 模糊查找器 这是我个人的喜好。它的解决方案不是开箱即用的香草,但我认为它值得称赞。您可以为 bash 安装一个模糊查找器扩展,它将使搜索许多内容变得更加高效(它取代了反向 i-search,因此 ctrl+r 被用作在历史中搜索的快捷方式)。
按
CTRL+R
并开始输入。再次按下CTRL+R
以找到下一个。您可以使用以下命令在 .bash_history 文件中查找
例子
假设你想在 .bash_history 中搜索 ls 命令
这个还没有被提及。
例如
UpArrow而不是精确地按下
n
时间,你会使用在外壳中。
这将调用
bash
shell 的历史扩展工具,并用返回历史的命令步骤替换扩展n
(并执行它)。例子:
请参阅手册中的“历史扩展”部分
bash
。history + grep(或任何其他文本搜索命令)
如果要列出所有包含字符串“foo”的历史条目:
history | grep "foo"
history
- 显示历史缓冲区中的所有命令grep "foo"
- 搜索包含字符串的行foo
,您也可以根据 grep 手册使用正则表达式。反向搜索
如果你想回顾历史(就像你以前用箭头键做的那样)使用 ctrl+r 是要走的路。只需按 ctrl+r 并开始输入。当短语已经输入时,您可以按 ctrl+r 多次,它将遍历匹配的历史条目
模糊查找器
这是我个人的喜好。它的解决方案不是开箱即用的香草,但我认为它值得称赞。您可以为 bash 安装一个模糊查找器扩展,它将使搜索许多内容变得更加高效(它取代了反向 i-search,因此 ctrl+r 被用作在历史中搜索的快捷方式)。