【发布时间】:2010-10-21 23:06:49
【问题描述】:
我正在尝试像使用 CTRL-r 一样搜索我的 bash 历史记录,但要向前搜索。
当我经常敲击一次 CTRL-r 以再次找到上一个命令时,这对我来说很痛苦。
如何像反向搜索一样向前搜索 Bash 历史记录?
【问题讨论】:
我正在尝试像使用 CTRL-r 一样搜索我的 bash 历史记录,但要向前搜索。
当我经常敲击一次 CTRL-r 以再次找到上一个命令时,这对我来说很痛苦。
如何像反向搜索一样向前搜索 Bash 历史记录?
【问题讨论】:
您也可以向前搜索。来自 bash 信息手册,“8.2.5 Searching for Commands in the History”:
要在历史记录中向后搜索特定字符串,请键入
C-r。 输入C-s搜索历史记录。
然而,Ctrl-S 的问题是有时会与 XON/XOFF 流控制发生冲突(例如在 Konsole 中)。然而,搜索是一项 readline 功能,您应该能够将其绑定到其他一些键。更新:更简单更好的是通过运行来禁用 XON/XOFF
stty -ixon
【讨论】:
.bash_profile 和 .profile 仅用于登录 shell。我会把它放在.bashrc(我来自.profile)。
[[ $- == *i* ]] && stty -ixon可以用来避免问题described here
.bash_profile,this answer on superuser 将是一种享受。
恕我直言,最好的技巧是使用pgup 和pgdown 启用。把它放在你的~/.inputrc
"\e[5~": history-search-forward
"\e[6~": history-search-backward
注销/登录,输入第一个字母,然后输入pgup 或pgdown 以搜索历史记录
ctrl-R 搜索所有包含单词的行,而 history-search-forward 搜索以单词开头的行
【讨论】:
/etc/inputrc 中取消注释这两行(例如在 Ubuntu 中)。
~/.inputrc 或 /etc/inputrc。如果放在任何 bashrc 文件中,这将不起作用,因为它不是命令,而是配置选项。
您可能想尝试https://github.com/dvorka/hstr,它允许使用(可选)基于度量的排序对 Bash 历史进行“建议框样式”过滤,即它在向前和向后方向上都更加高效和快速:
bound 可以轻松地 Ctrl-r 和/或 Ctrl-s
【讨论】:
sudo add-apt-repository ppa:ultradvorka/ppa; sudo apt-get update; sudo apt-get install hh; hh --show-configuration >> ~/.bashrc;
我通常在终端按ESC,然后按>。它至少会重置,然后您可以尝试少点击CTRL+R。
【讨论】:
另一种解决方案是使用:
history | grep <searched expression>
【讨论】:
正如许多人所经历的那样,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
【讨论】: