与CTRL-r类似,无法转发搜索Bash历史记录

时间:2009-04-26 22:53:58

标签: bash search

我试图像 CTRL - r 一样搜索我的bash历史,但要转发方向。

对我来说这很痛苦,当我经常点击 CTRL - r 时,再次找到上一个命令。

如何像反向搜索一样转发搜索Bash历史记录?

6 个答案:

答案 0 :(得分:268)

您也可以向前搜索。从bash信息手册“8.2.5 Searching for Commands in the History”:

  

要在历史记录中向后搜索特定字符串,请键入C-r。   键入C-s会搜索历史记录。

然而,Ctrl-S的问题是有时会与XON / XOFF流控制冲突(例如在Konsole中)。但是,搜索是一个readline功能,您应该能够将其绑定到其他键。更新:更简单,更好的方法就是通过运行

来禁用XON / XOFF
stty -ixon

答案 1 :(得分:34)

恕我直言的最佳伎俩是使用pguppgdown启用。把它放在~/.inputrc

"\e[5~": history-search-forward
"\e[6~": history-search-backward

退出/登录,输入第一个字母,然后pguppgdown在历史记录中搜索

ctrl-R搜索包含单词的所有行,而以单词

开头的历史搜索前进搜索行

答案 2 :(得分:22)

您可能想尝试https://github.com/dvorka/hstr,它允许使用(可选)基于排序的指标对Bash历史记录进行“建议框样式”过滤,即在前向和后向方向上效率更高,速度更快:

enter image description here

可以轻松bound Ctrl-r 和/或 Ctrl-s

答案 3 :(得分:12)

我通常在终端按ESC,然后按'>'。它至少会重置,然后你可以尝试点击不太常用的CTRL + R.

答案 4 :(得分:2)

另一种解决方法是使用:

history | grep <searched expression>

答案 5 :(得分:1)

正如许多人所经历的那样,ctrl+s 冻结(并且 ctrl+q 解冻)终端,因为software flow control(XON/XOFF 流量控制),您可以按照已接受的答案中所述禁用它。

虽然我不能说我真的有意使用了该功能,但我确实希望该选项能够暂停快速移动的终端文本流,所以我不想完全禁用它。

因此,我没有将其关闭,而是通过将以下内容放入我的 .bashrc 中来重新调用 xoff 函数

stty stop '^P'

将 xoff 绑定到 ctrl+p(并且 ctrl+q 仍然解冻)。我使用“p”表示“暂停”,这确实掩盖了 bash 上一个命令函数 previous-history。就我个人而言,我总是使用向上箭头键,所以这对我来说无关紧要,但您可以选择其他键。

这会自动为 forward-search-history

释放 ctrl+s