如何设置我的 BASH 历史记录滚动以根据我已经输入的内容进行过滤?

如何设置我的 BASH 历史记录滚动以根据我已经输入的内容进行过滤?

给定命令的历史记录:

1 pwd
2 mysql -u root -p
3 ps -ef | more
4 top
5 mysql -h 192.168.1.101 -u root -p

按向上箭头时,会滚动浏览所有这些命令。我以前在某处读到过(并在我的工作电脑上做过),您可以设置 BASH,这样当我第一次输入p然后按向上箭头时,它只会滚动浏览历史记录中以“p”(pwdps -ef | more)开头的所有命令。当我输入mysql然后按向上箭头时,它只会滚动浏览以“mysql”开头的所有命令。

我想设置我的笔记本电脑来使用它,但我找不到说明。

答案1

您可以配置增量搜索/etc/inputrc(针对机器范围的更改)或~/.inputrc(仅适用于您的用户帐户)。

添加以下两行:

"\e[A": 向后历史搜索
"\e[B": 历史搜索向前

答案2

或者,您可以按ctrl+R进入reverse-i-search模式。然后您可以开始输入,它会找到与您输入的字符串匹配的第一行(即,输入m它会跳回到mysql -h 192.168.1.101 -u root -p;然后输入o它会跳回到ps -ef | more因为那是第一行mo

您可以ctrl+r再次点击以搜索之前的匹配项(即,ctrl+r,my,ctrl+r将带您到以 开头的倒数第二个命令mysql

您可以阅读更多有关搜索 Readline 的信息历史搜索与历史记录交互的命令以及如何修改默认的键绑定和行为man bash(或在线的

相关内容