问题描述
除了查看历史记录,是否有一种方法可以过滤我的历史记录?
假设我想搜索以”ssh”开头的命令?
最佳解决思路
按Ctrl
+ R
并键入ssh
。 Ctrl
+ R
将从最近的命令开始搜索旧的(reverse-search)。如果您有多个以ssh
开头的命令,请反复按Ctrl
+ R
直到您找到匹配项。
一旦找到匹配项,您可以按Enter
执行命令或左/右光标,以选择命令的文本。
Ctrl
+ R
没有默认的反向选项来反转搜索的方向,但here您会发现一些关于它的建议。
次佳解决思路
如果您只想搜索历史记录,则可以使用history | grep ssh
,将ssh替换为您想要搜索的内容。
第三种解决思路
按Ctrl
+ R
将启动”reverse-i-search”模式,输入”ssh”将搜索包含”ssh”的命令的历史记录。
第四种思路
我做了上述的细微变化,对我很好(如果你指的是你的bash历史
在我的主文件夹中创建一个名为的文件
.inputrc
里面去这个
"\e[5~": history-search-backward
"\e[6~": history-search-forward
注意:上述内容在14.04中似乎不再适用,所以这也是同样的事情 –
"\e[A":history-search-backward
"\e[B":history-search-forward
然后输入我希望的大部分前一个命令,使用页面向上/页面dn按钮搜索历史记录,始终从页面向上开始
第五种思路
这是另一种使用经典命令的方法(更有可能跨越发行版)。命令历史记录存储在主目录中的文件.bash_history
中,因此您可以执行此操作:
grep "ssh" ~/.bash_history
如果您需要区分大小写的搜索,请不要忘记-i
标志。
第六种思路
我在互联网上的某个地方找到了以下功能,并且使用它起到了很大的作用。把它放在你的~/.bashrc
中:
hgrep () {
history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}
现在re-load你的shell:exec bash
。你现在有一个新的命令,你可以这样使用:
hgrep ssh
它会显示您历史记录中匹配命令的列表。要运行命令,请键入!
,然后输入命令号。这是一个例子:
~:$ hgrep scp
207 tn scp foreign-teachers __HOST__:unity.log __HOST__:compiz.log .
421 tn scp scott-laptop __HOST__:Scott\ Severance.asc .
422 tn scp scott-laptop __HOST__:'Scott\ Severance.asc' .
468 tn scott-desktop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
469 tn scott-laptop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
470 scp -r Backgrounds/* 192.168.1.2:Pictures/Backgrounds
~:$ !207
我喜欢这种方法比Ctrl
+ R
更好,因为它可以实现更灵活的搜索,并且我可以一次看到多个结果。