我想知道如何在不知道命令的前几个字母的情况下搜索历史命令?
Ctrl使用+ Rin搜索时bash
,必须给出命令的前几个字母。如果我只认识中间的一些字符,或者一些在开头,一些在中间怎么办?
例如,要搜索,我只知道其中cat myfile
有,或者在开头和中间的某个地方。关键词必须连续定位。例如,在 中,我想搜索和,但+不允许同时指定两者。at
c
my
cat myfile
c
my
CtrlR
答案1
如果您只是想找到该行(以唤起您的记忆),您可以只 grep 查找您记住的命令部分:
history | grep "substring"
答案2
据我所知,Bash 只有简单的字符串搜索。
考虑切换到桀骜,它具有历史通配符搜索。history-incremental-pattern-search-backward
和history-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
这两个以及通配符 * 和 ? 应该会有很大的帮助。