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

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

如何在 bash 上按向上/向下调出以我已输入的前缀开头的最后一个命令?

例如

$ ls foo
$ echo hello
$ ls <UP_ARROW>

输入 ls 后单击 UP 应显示“ls foo”而不是“echo hello”

答案1

几种可能性:

  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其他命令) ,等等...lsls foo

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

相关内容