在reverse-i-search(Ctrl + R)中,任何在历史记录中切换类似命令的方法

时间:2013-01-09 09:07:35

标签: linux bash command-line

我认为一个例子很好理解我的问题。

...
scp file1 user10@192.168.10.1:/home/user1/linuxfiles/samplecode/important
...
...
scp file1 user10@192.168.10.1:/home/user1/linuxfiles/samplecode/important/tested
...
...

假设这是历史中命令的顺序。如果我正在执行 Ctrl + R 并键入scp,它将显示最后执行的scp命令(即以'tests'结尾的行) 。

但我想找到以'important'结尾的scp命令。那么这个reverse-i-search中是否有任何方法可以查看以scp开头的所有命令,以选择合适的命令?

4 个答案:

答案 0 :(得分:98)

继续按 Ctrl - R ,它将遍历您的历史记录。

答案 1 :(得分:16)

如果您的搜索字词更复杂/不连续,则另一个选项是在history结果中进行grep,例如:

history 300 | grep scp | grep important$

这将返回历史记录中匹配的命令列表,例如:

3323  scp file1 user10@192.168.10.1:/home/user1/linuxfiles/samplecode/important
3325  scp file1 user10@192.168.10.1:/home/user1/winfiles/samplecode/important

然后,您可以使用!3325执行相关命令。

我有时会在运行大量类似命令时发现这很有用,可能需要多次按 Ctrl + R 才能返回到确切的命令。

答案 2 :(得分:2)

Ctrl + R

有很好的替代方案

安装https://github.com/dvorka/hstr

使用class Settings { get domain() { return 'haslfjdasdf' } } const set = new Settings(); console.log(set.domain);

运行它

它显示了所有最后执行的命令的列表(./bash_history的内容)

如果您开始输入,列表将根据您输入的内容进行过滤

您可以使用向上 / 向下箭头选择所需的命令,然后使用 Enter

选择它

答案 3 :(得分:0)

我发现这个很棒的工具 mcfly 可以代替传统的Ctrl + R,并且效果很好。基本上,您可以在键入时看到所有结果,还可以选择要查找的命令。您还可以自定义布局等。我真的推荐它。

https://github.com/cantino/mcfly

Example of mcfly session