说我想搜索以“ ssh”开头的命令?
#1 楼
按Ctrl + R并输入ssh
。 Ctrl + R将开始从最新命令搜索到旧命令(反向搜索)。如果您有多个以ssh
开头的命令,请反复按Ctrl + R,直到找到匹配项。找到匹配项后,可以按Enter执行该命令或向左/右光标仅选择命令的文本。
Ctrl + R没有默认的反向选项,可以反转搜索的方向,但在这里您会找到一些建议。 >
#2 楼
如果只想搜索历史记录,则可以使用history | grep ssh
,用ssh替换要搜索的任何内容。#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 "$@"; }
评论
我使用此方法,是因为我链接以在列表中查看与我的过滤器匹配的每个命令。
–斯特凡诺
2011年11月9日14:40