如何在 bash 上按向上/向下调出以我已输入的前缀开头的最后一个命令?
例如
$ ls foo
$ echo hello
$ ls <UP_ARROW>
输入 ls 后单击 UP 应显示“ls foo”而不是“echo hello”
答案1
几种可能性:
绑定
history-search-backward/forward
命令。我相信这最接近你想要的:bind '"\e[A":history-search-backward' bind '"\e[B":history-search-forward'
使用历史记录 i-search。这大概是必然的
^R
。在空行上,^Rls<space>
将使您返回到ls foo
,然后^R
再次将您带到之前的最后一个命令(或该行中某处的ls
其他命令) ,等等...ls
ls foo
绑定
magic-space
命令:bind SPACE:magic-space
.然后输入(在空行上)!ls<space>
,readline 将自动执行历史替换,留下ls foo
.