如何使bash历史记录对前缀敏感?


8

如何使按bash的上/下键弹出以我已经输入的前缀开头的最后一个命令?

例如

$ ls foo
$ echo hello
$ ls <UP_ARROW>

输入ls后单击UP应该弹出“ ls foo”而不是“ echo hello”

Answers:


11

一些可能性:

  1. 绑定history-search-backward/forward命令。我相信这与您想要的最接近:

    bind '"\e[A":history-search-backward'
    bind '"\e[B":history-search-forward'
  2. 使用历史记录i-search。这可能绑定到^R。在空白行上,^Rls<space>将带您返回ls foo,然后^R再次将您带到最后一个ls命令(或ls行中某处的其他命令)ls foo,等等。

  3. 绑定magic-space命令:bind SPACE:magic-space。然后键入(在空行上)!ls<space>,然后readline将自动执行历史记录替换,而您将剩下ls foo


1
谢谢。我选择了选项1,并借助这个旧答案,意识到\ e [B将绑定向下箭头。
ripper234 2011年

我编辑了您的问题,以包括历史搜索-转发(很好,
已将
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.