使用不连续关键字搜索历史命令

使用不连续关键字搜索历史命令

我想知道如何在不知道命令的前几个字母的情况下搜索历史命令?

Ctrl使用+ Rin搜索时bash,必须给出命令的前几个字母。如果我只认识中间的一些字符,或者一些在开头,一些在中间怎么办?

例如,要搜索,我只知道其中cat myfile有,或者在开头和中间的某个地方。关键词必须连续定位。例如,在 中,我想搜索和,但+不允许同时指定两者。atcmycat myfilecmyCtrlR

答案1

如果您只是想找到该行(以唤起您的记忆),您可以只 grep 查找您记住的命令部分:

history | grep "substring"

答案2

据我所知,Bash 只有简单的字符串搜索。

考虑切换到桀骜,它具有历史通配符搜索。history-incremental-pattern-search-backwardhistory-incremental-pattern-search-forward默认情况下不绑定到键,但您可以绑定它们:

bindkey '^X^R' history-incremental-pattern-search-backward
bindkey '^X^S' history-incremental-pattern-search-forward

然后输入Ctrl+X Ctrl+R ^c*my.

答案3

如果 man 包含该单词,Apropos(1) 还应该返回主题的 man。 Whatis(1) 仅返回绝对匹配。

供参考:Apropos == man -k Whatis == man -f

这两个以及通配符 * 和 ? 应该会有很大的帮助。

相关内容