当前位置: 首页>>技术问答>>正文


如何搜索我的命令行历史记录以查找我之前使用过的命令?

,

问题描述

除了查看历史记录,是否有一种方法可以过滤我的历史记录?

假设我想搜索以”ssh”开头的命令?

最佳解决思路

Ctrl + R并键入sshCtrl + 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更好,因为它可以实现更灵活的搜索,并且我可以一次看到多个结果。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/424.html,未经允许,请勿转载。