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

bash中Ctrl-R反向搜索的替代方法,bash,readline,Bash,Readline,我很高兴,并且非常喜欢bashshell的Ctrl-R向后搜索功能。我的一些同事不喜欢它,因为它有时令人困惑。我理解他们。如果输入了错误的字符,则历史记录中的当前位置在过去的某个位置,您将找不到最近的匹配项 在shell历史中,是否有一种更为用户友好的方法来向后搜索 我想坚持用bash。建议另一种外壳并不是这个问题的答案 这里解释了“失去位置”的问题:这些解决方案有效。这是正确的。但根据我的观点,解决方案并不简单,也不友好。这些解决方案并不简单直接。这些都是过去的解决方案。在过去,人类需要学习计

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

在shell历史中,是否有一种更为用户友好的方法来向后搜索

我想坚持用bash。建议另一种外壳并不是这个问题的答案


这里解释了“失去位置”的问题:这些解决方案有效。这是正确的。但根据我的观点,解决方案并不简单,也不友好。这些解决方案并不简单直接。这些都是过去的解决方案。在过去,人类需要学习计算机想要输入的方式。但是现在,这些工具应该以一种方便用户的方式接受输入。

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

如果输入了正确的搜索字符,但返回了许多步骤,也可以设置Ctrl-S以反转搜索方向。Ctrl-S允许您前进。要启用此功能,您需要添加:

stty -ixon
"\C-s": forward-search-history
到Bash启动文件。您可能需要添加:

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

对于您的
~/.inputrc

,您还可以使用
历史向后搜索
。默认情况下,它不绑定到任何键,因此需要添加

"\eq": history-search-backward
到您的
~/.inputrc
。然后,您可以键入要在历史记录中查找的命令的前缀,例如

cd /l
然后按Alt+q,shell将其展开为

cd /last-visited-dir

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

通过
grep
管道
history
提供了一种与历史缓冲区交互的“较少交互”方式,但有时需要的是较少的交互


您可以使用
从grep输出重新执行特定编号的命令!数字

交互式shell的配置和使用是一个主题,而不是堆栈溢出;我们在这里的范围仅限于“软件开发独有”的问题。@CharlesDuffy你说得对。我在这里提出了一个新问题:请注意,
ctrl-S
ctrl-Q
也被大多数终端用于流量控制(ctrl-S是pause),因此您可能需要使用不同的键。