我试图像 CTRL - r 一样搜索我的bash历史,但要转发方向。
对我来说这很痛苦,当我经常点击 CTRL - r 时,再次找到上一个命令。
如何像反向搜索一样转发搜索Bash历史记录?
答案 0 :(得分:268)
您也可以向前搜索。从bash信息手册“8.2.5 Searching for Commands in the History”:
要在历史记录中向后搜索特定字符串,请键入
C-r
。 键入C-s
会搜索历史记录。
然而,Ctrl-S的问题是有时会与XON / XOFF流控制冲突(例如在Konsole中)。但是,搜索是一个readline功能,您应该能够将其绑定到其他键。更新:更简单,更好的方法就是通过运行
来禁用XON / XOFFstty -ixon
答案 1 :(得分:34)
恕我直言的最佳伎俩是使用pgup
和pgdown
启用。把它放在~/.inputrc
"\e[5~": history-search-forward
"\e[6~": history-search-backward
退出/登录,输入第一个字母,然后pgup
或pgdown
在历史记录中搜索
ctrl-R
搜索包含单词的所有行,而以单词
答案 2 :(得分:22)
您可能想尝试https://github.com/dvorka/hstr,它允许使用(可选)基于排序的指标对Bash历史记录进行“建议框样式”过滤,即在前向和后向方向上效率更高,速度更快:
可以轻松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