bash中Ctrl-R反向搜索的替代方法

时间:2019-06-07 12:15:33

标签: bash readline

我很高兴,真的很喜欢bash shell的 Ctrl - R 后向搜索功能。我的一些同事不喜欢它,因为有时会令人困惑。我了解他们如果输入错误的字符,则历史记录中的当前位置是过去的某个位置,并且不会找到最近的匹配项。

在shell历史记录中是否存在一种更加用户友好的替代方法?

我想坚持下去。建议使用其他外壳程序不能解决该问题。

此处解释了“丢失位置”的问题:Reset bash history search position这些解决方案有效。那就对了。但是根据我的观点,那里的解决方案并不容易且用户友好。这些解决方案并不简单直接。这些是过去的解决方案。过去,人类需要学习计算机想要输入的方式。但是今天,这些工具应该以用户易于接受的方式接受输入。

3 个答案:

答案 0 :(得分:1)

如果输入了错误的字符,请按 Ctrl - G 停止搜索,然后按 Ctrl - R 和正确的字符以重新开始搜索。

您还可以设置 Ctrl - S 来反转搜索方向,以防您输入正确的搜索字符但后退了许多步。 Ctrl - S 允许您前进。要启用此功能,您需要添加:

stty -ixon

到您的Bash启动文件。您可能需要添加:

"\C-s": forward-search-history

发送到您的~/.inputrc

答案 1 :(得分:1)

您也可以使用history-search-backward。默认情况下,它没有绑定任何键,因此您需要添加

"\eq": history-search-backward

您的~/.inputrc。然后,您可以输入要在历史记录中查找的命令的前缀,例如

cd /l

然后按 Alt + q ,然后外壳程序会将其扩展为

cd /last-visited-dir

再次按组合键将搜索先前提到的内容,等等。

答案 2 :(得分:0)

通过historygrep进行配管可为您提供一种“较少交互”的方式来与历史记录缓冲区交互,但有时您需要的是较少交互性。

您可以使用!number

从grep输出中重新执行特定编号的命令。