如何在 Bash 历史记录中查找一项

如何在 Bash 历史记录中查找一项

当我打开 bash 并按向上箭头时,我会看到我输入的最后一个命令。继续按下向上箭头将显示过去键入的一系列命令。

如何从该列表中找到一个特定命令,而不必按向上箭头 n 次?

答案1

按下CTRL+R并开始打字。再按CTRL+R一次即可找到下一个。

答案2

您可以使用以下命令在 .bash_history 文件中查找

sed -n '/commandwhichyouwanttosearch/p' bash.history

例子

假设你想在.bash_history中搜索ls命令

history | sed -n '/ls/p'

答案3

这一点还没有被提及。

!start-of-command

例如

echo hello
ls
!echo
#finds echo hello

答案4

History + grep(或任何其他文本搜索命令)

如果要列出包含字符串“foo”的所有历史条目: history | grep "foo"

history- 显示历史缓冲区中的所有命令

grep "foo"- 搜索包含字符串的行foo,也可以根据grep手册使用正则表达式。


反向i搜索

如果您想返回历史记录(就像之前使用箭头键所做的那样),请使用 ctrl+r 。只需按 ctrl+r 并开始输入即可。当已经输入短语时,您可以多次按 ctrl+r,它将迭代返回匹配的历史记录条目


模糊查找器

这是我个人的偏好。它的解决方案并不是开箱即用的,但我认为它值得一些赞扬。您可以为 bash 安装一个模糊查找器扩展,它将使搜索许多内容更加高效(它取代了反向 i-search,因此 ctrl+r 被用作历史搜索的快捷方式)。

相关内容