在 bash 历史记录中搜索已输入的命令

在 bash 历史记录中搜索已输入的命令

当我输入 ctrl+r 并然后开始输入我可以看到历史记录中的哪些命令匹配,这很棒。

现在有没有办法搜索我所拥有的命令的历史记录已经在终端中输入?

例如,如果我输入 ctrl+r,然后输入 ping,我可以循环浏览已 ping 通的服务器。但是,如果我先输入“ping”,然后按 ctrl+r,它会忽略我已经输入的“ping”。

有时,当我输入一串命令到一半时,我会想“哦,我已经输入过了,如果能搜索一下我已经输入的历史记录就好了,而不是从头开始”。

我的要求有意义吗?

答案1

如果您开始输入命令,然后在输入一些命令后,记得进行历史搜索,您只需要:

  • CTRL+A
  • CTRL+R
  • CTRL+Y
  • CTRL+R ...(继续搜索或)
  • CTRL+S ...(向另一个方向搜索*)

注意:CTRL+S将暂停您的终端,除非您使用以下命令明确撤销此行为

[[ $- == *i* ]] && stty -ixon

在你的.bashrc


编辑:在这个有点重复的问题中可以看到一个快捷方式https://superuser.com/questions/384051/is-there-a-way-of-using-ctrl-r-after-typing-part-of-command-in-bash/1271740#1271740

答案2

答案位于右侧栏中 stackexchange 自动列出的“相关”问题之一。实验类型

bind '"\e[A": history-search-backward'

然后输入部分命令并使用向上箭头键(应生成escape [ A)在历史记录中搜索此部分输入。请参阅完整答案了解更多。

相关内容