当我打开 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 被用作历史搜索的快捷方式)。