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

Aru*_*run 47 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
...
...
Run Code Online (Sandbox Code Playgroud)

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

但我想找到以'important'结尾的scp命令.那么有什么办法reverse-i-search可以查看以scp开头的所有命令来选择合适的命令吗?

jgr*_*jgr 98

继续按Ctrl- R它会遍历你的历史.

  • 谢谢,有可能向后使用Ctrl-R吗?因此,如果我"ctrl-R"一段时间,我会看到结果,但我想向后看."Shift-Ctrl-R"不起作用.编辑:解决方案是在SO,见"相关". (3认同)
  • 转发搜索:Ctrl-S.请参见http://stackoverflow.com/questions/17760474/reverse-intelligent-search-reverse-i-search-how-to-get-previous-result?rq=1 (2认同)

Bon*_*fum 16

如果您的搜索条件有点复杂/不连续,则另一种选择是在history结果中进行grep ,例如:

history 300 | grep scp | grep important$
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

然后,您可以执行相关命令!3325.

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