在 bash 中调用历史记录

在 bash 中调用历史记录

我非常喜欢这个魔法,.inputrc它允许我使用向上箭头键快速自动完成命令。

"\e[A": history-search-backward
"\e[B": history-search-forward
"\eOA": history-search-backward
"\eOB": history-search-forward

然而,很多时候,我必须在 vanilla linux 上使用 ssh,这时我必须使用CTRL+ R。这样一来,我通常会变得非常没有效率,因为我不知道如何使用这个命令。

.inputrc是时候质疑我的工作流程了。使用原生的 bash 历史反向搜索能比我的魔法更有效率吗?

具体用例

我想回想一下python我写的最后一行。我的解决方案是pyt+ +Enter

使用反向 i 搜索,如果我执行CTRL+ R, pyt。我通常会得到包含 的任何命令pyt,而不是以 开头的最后一个命令python

更烦人的是,我通常会在已经输入完时才意识到应该使用历史记录pyth。如果我按CTRL+,R我会得到:

(reverse-i-search)`': pyth

这非常令人困惑,因为如果我输入,o我会突然得到一个很久以前输入的 WTF 命令,其中仅包含一个o

我完全确定我没有正确使用反向搜索。我遗漏了什么?

答案1

您是否使用额外的CTRL+R按键来超越第一个匹配?

在上面的例子中,当您命中后,您可以通过按下额外的+键pyth继续匹配。CTRLR

这就是你要找的东西吗?


更新:根据要求,在下面添加了示例。

例如:我想匹配这两个类似命令中较旧的一个。

$ python -m this
# ... snip...

$ python -c "import this"
# ... snip...

现在当你:

  1. CTRL+R
  2. 开始输入pyt

此时,您已匹配了两个命令中的后者。但不是您想要的那个(在本例中)。

  1. 点击CTRL+R再一次

此时您将匹配您想要的命令。

相关内容