我很高兴,真的很喜欢bash shell的 Ctrl - R 后向搜索功能。我的一些同事不喜欢它,因为有时会令人困惑。我了解他们如果输入错误的字符,则历史记录中的当前位置是过去的某个位置,并且不会找到最近的匹配项。
在shell历史记录中是否存在一种更加用户友好的替代方法?
我想坚持下去。建议使用其他外壳程序不能解决该问题。
此处解释了“丢失位置”的问题:Reset bash history search position这些解决方案有效。那就对了。但是根据我的观点,那里的解决方案并不容易且用户友好。这些解决方案并不简单直接。这些是过去的解决方案。过去,人类需要学习计算机想要输入的方式。但是今天,这些工具应该以用户易于接受的方式接受输入。
答案 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)
通过history
到grep
进行配管可为您提供一种“较少交互”的方式来与历史记录缓冲区交互,但有时您需要的是较少交互性。
您可以使用!number