Bash 中的(反向搜索)

Mik*_*ike 28 linux bash command-history

我通常最终使用CTRL+ rfor (reverse-i-search),但是,有时我会传递我正在寻找的命令;如果我再做一次(reverse-i-search),它就再也找不到了。我假设当前指向命令历史记录的指针在我要查找的命令之前。

有谁知道如何返回历史记录中的最新命令而不必单击 1000 次down arrow

Den*_*son 41

实际上,该问题的另一个答案提供了更好的选择。

在您~/.bashrc添加以下行:

stty -ixon
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用Ctrl-s以与使用相同的方式向前浏览历史记录Ctrl-r后退。

这甚至可以在浏览历史记录时开始新的向前搜索(称为i-search,而不是reverse-i-search)。假设您这样做了Ctrl-r并在目的地附近键入一些命令文本,然后多次按向上箭头超出了您真正要查找的内容(或者您改变了主意)。现在按Ctrl-s并从该行输入几个字符。Zoooom!直奔它。

  • @GregoryPakosz:它禁用了 XON/XOFF([软件流控制](http://en.wikipedia.org/wiki/Software_flow_control)),这在键盘上是无用的,因为我们的通信速率比300 波特。 (7认同)
  • stty -ixon 的含义是什么?它是否禁用了在其他情况下可能需要的东西? (2认同)

Dou*_*ris 7

stackoverflow.com 上有一个类似的问题

最好的答案是Ctrl+G用来取消当前的搜索。

  • 这确实不是最佳答案。最好的答案是 Dennis Williamson 给出的答案:在你的 `.bashrc`(或其他一些相应的配置文件)中添加 `stty -ixon`,然后 `Ctrl-S` 在历史中前进,类似于 `Ctrl- G` 向后退步。`Ctrl-G` 将 `reverse-i-search` 更改为 `i-search` 后的第一个 `Ctrl-S` 按键,下一个 `Ctrl-S` 向前迈出了第一步。然后每一个`Ctrl-S` 向前多走一步。 (2认同)