取消bash中的反向搜索失败,但保留我输入的内容

时间:2015-10-27 00:37:47

标签: linux bash ubuntu command-line

每次运行命令时我都会按Ctrl + R,但输入一个单词后(例如查找)我发现命令不在我的历史记录中,所以我按预期得到了这个:

(failed reverse-i-search)`find`: cat fire.txt

现在如何取消搜索但在命令行中保留“查找”?无论什么键,我按'cat fire.txt'都会在我的命令行上结束,我必须擦除并重新输入我的命令。

我正在使用Ubuntu。谢谢。

2 个答案:

答案 0 :(得分:1)

您按“退出”键终止反向搜索。 我在这里推测。由于您有意在命令行中启用了查找,因此会触发反向搜索。

反向搜索从最新到最旧搜索索引。由于cat fire.txt始终是最近的搜索,因此始终会首先显示。

Linux Bash现在允许使用cntrl + S进行正向搜索和使用cntrl + R进行反向搜索。请检查您的终端是否陷阱cntrl + Scntrl + Q以进行流量控制。 如果是这种情况,您可以使用stty -ixon

禁用它

希望这会有所帮助。

答案 1 :(得分:0)

我不知道你可以完全按照自己的意愿行事,但你可以隐约接近(尽管它牺牲了反向搜索的其他功能)。

将一个键序列绑定到this comment,然后输入起始单词然后点击绑定序列来进行搜索。

  

history-search-backward()

     

在历史记录中向后搜索当前行的开头和点之间的字符串。搜索字符串必须在历史记录行的开头匹配。这是一种非增量搜索。默认情况下,此命令未绑定。

但这仅适用于以您要搜索的单词开头的命令(以及不是增量的)。

更新:刚刚发现,在寻找其他内容时,在bash history-search-backward中为4.3提供了一个条目

  

湾有新的可绑定命令来搜索字符串的历史记录       行的开头和点之间的字符       (history-substring-search-forward,history-substring-search-backward)

这意味着使用足够新版本的readline(在NEWS的readline部分中),您仍然可以使用此版本进行子字符串历史记录搜索。