在终端中,我可以输入Ctrl+R来搜索之前在 BASH 中输入的匹配命令。例如,如果我输入Ctrl+ Rthen grep
,它会列出我的最后一个grep
命令,我可以按 Enter 来使用它。但这只给出了一个建议。有没有办法循环浏览其他先前输入的匹配命令?
答案1
如果我正确理解了这个问题,您应该能够通过反复点击Ctrl+来循环选择选项R。
例如:
- Ctrl+R
grep
- Ctrl+R
- Ctrl+ R ...
这会向后搜索你的历史。要向前搜索,请使用Ctrl+ S,但您可能需要在此之前设置:(stty -ixon
通过.bash_profile
或手动)以禁用接管Ctrl+的 XON/XOFF 功能S。如果发生这种情况,请使用Ctrl+Q重新启用屏幕输出(更多详细信息这里.)
答案2
如果你觉得该命令会经常使用,你可以添加一个标签
command #useful
然后
Ctrl+R #useful
这是有效的,因为#
是注释分隔符,即符号后面的所有内容都不会解释为命令。但是,它会被记录在历史中,因此可以搜索。
答案3
您还可以通过将这些行添加到 ~/.inputrc 来设置向上和向下箭头来执行稍微不同的搜索:
"\e[A": history-search-backward
"\e[B": history-search-forward
而不是在命令中的任何位置搜索子字符串(例如Ctrl-r)它将搜索命令从光标左侧的文本开始。例如,如果我运行这些命令:
$ ls bart
$ ls fools
然后键入ls
并按Up两次,它将显示ls bart
和光标在同一位置。与Ctrl-相比r,它会ls
在最后一行中找到两次,因此您必须再次按它才能找到上一行。
这些方法都有各自的优点,并且都可以节省大量时间。