除了查看历史记录之外,还有什么方法可以过滤我的历史记录?

说我想搜索以“ ssh”开头的命令?

#1 楼

按Ctrl + R并输入ssh。 Ctrl + R将开始从最新命令搜索到旧命令(反向搜索)。如果您有多个以ssh开头的命令,请反复按Ctrl + R,直到找到匹配项。

找到匹配项后,可以按Enter执行该命令或向左/右光标仅选择命令的文本。

Ctrl + R没有默认的反向选项,可以反转搜索的方向,但在这里您会找到一些建议。 >

#2 楼

如果只想搜索历史记录,则可以使用history | grep ssh,用ssh替换要搜索的任何内容。

评论


我使用此方法,是因为我链接以在列表中查看与我的过滤器匹配的每个命令。

–斯特凡诺
2011年11月9日14:40

#3 楼

我对上述内容做了一些细微的改动,对我来说效果很好(如果您指的是bash历史记录

,请在我的主文件夹中创建一个名为

.inputrc


里面有这个问题

"\e[5~": history-search-backward
"\e[6~": history-search-forward


注意:上面的内容在14.04中似乎不再起作用,所以它做同样的事情-

"\e[A":history-search-backward
"\e[B":history-search-forward


然后键入我希望输入的大部分先前命令并使用Page Up / Page dn按钮搜索历史记录,始终从上一页开始

评论


如果您具有root权限,则可以很快编辑/ etc / inputrc,这将对所有用户有效。

– Wolfy
2011年11月2日,16:14

@doug,嗯。。我有Ubuntu 15.04。此解决方案有效,但会弄乱Ctrl + LeftArrow / Ctrl + RightArrow键。问题看起来与创建.inputrc文件而不是其中的条目类似。

–拉维
16年7月14日在11:12



不要忘记重新绑定.inputrc或关闭终端

–大卫·布罗萨德(David Brossard)
18年6月13日在21:14

#4 楼

按Ctrl + R将启动“反向搜索”模式,键入“ ssh”将在您的历史记录中搜索包含“ ssh”的命令。

#5 楼

这是使用经典命令的另一种方法(更可能在发行版中使用)。命令历史记录存储在主目录中的文件.bash_history中,因此您可以执行以下操作:

grep "ssh" ~/.bash_history


如果需要区分大小写的搜索,请不要忘记-i标志。

评论


历史| grep ssh将仅显示临时会话的ssh,因此我将寻求此答案。

– iniravpatel
19年6月25日在8:41

#6 楼

我在Internet上的某个地方发现了以下功能,并用了很大的效果。将其放入您的~/.bashrc中:

hgrep () { 
    history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}


现在重新加载外壳: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相比,我更喜欢这种方法,因为它允许更灵活的搜索,而且我可以一次看到多个结果。 >

#7 楼

将其放在您的~/.bashrc中:


别名hgrep ='history | grep --color = auto'


示例:

#8 楼

如果在Emacs(M-x shell)中使用shell,则可以使用M-r(等效于终端中的Ctrl + R)。

#9 楼

想要将其写为@ssmy的注释,但无法在注释中获取格式以配合使用。

使用history | grep ssh搜索历史记录后,您可以通过键入其编号来执行所需的命令前面带有感叹号,例如!42

示例:

$ history | grep ssh
  5 ssh me@someserver.net
 13 ssh me@someotherserver.net
 42 ssh me@thisone.com
$ !42


#10 楼

历史记录很好,但是有限-我喜欢设置bash环境,以便除了运行它们的目录之外,还记录我曾经运行过的所有命令。然后,我运行一个命令以列出所有命令我已经在当前目录中运行,可以通过管道将其传递给grep等-称为“盘”,请参见:如果您想追逐潮流,只需在.bashrc(https://github.com/wolfwoolford/dish/blob/master/dishrc)中找到源代码。

还有一个非常有用的命令您免费获得名为“ dishg”的命令-或dish global-可以打印出曾经运行的每个命令,而与目录无关。显然,此选项仅在与grep和tail等一起使用时才有用。

我已经使用了多年,这实际上是我安装新盒子时首先安装的东西。它会将您运行的命令记录到隐藏目录(〜/ .dish)中的文本文件中。.我从来没有磁盘空间问题...

#11 楼

我想grep我的历史记录,而不是Ctrl + R向后搜索。那是因为用Ctrl + R只能看到一行。使用grep,您可以更全面地了解与命令等的最后一次交互。
我在.bashrc中具有以下内容。它使您可以通过键入hiss KEYWORD搜索命令历史记录。随便叫什么。我喜欢嘶嘶声^^。不要忘记用.bashrc重新加载source ~/.bashrc文件
hiss () { history | grep "$@"; }