Unix 命令历史--快速查找命令

Unix 命令历史--快速查找命令

有没有办法(或特定的 shell)可以按以下方式浏览历史记录:假设我两周前写了以下命令:

scp ../../../file.txt ../../../...

我不想使用箭头来查找命令,因为这会花费太多时间。相反,我想输入scp以缩小可能性,然后浏览历史记录。

答案1

对于Ctrl-r(反向搜索),每次点击时Ctrl-r都会回到历史上最早的下一个匹配,所以这可能是最好的选择。

但是,还有其他选项,例如!运算符。如果最后一个命令是唯一的(scp此后没有再次执行),您可以使用!scp它将执行scp历史记录中以开头的最后一个命令。此外,如果您使用该history | grep scp方法,您可以使用!命令编号来执行命令。例如:

$ history | egrep scp
 268  scp foo@bar:/home/foo/file .
$ !268

!268将准确执行命令 268,就像它在history输出中显示的那样,除了前面的数字。

答案2

我用

history | grep scp 

然后复制、粘贴和编辑(如果需要)或者只是! <command number>

答案3

尝试Ctrl+r搜索历史记录。您应该会收到如下提示:

(reverse-i-search)`':

答案4

我有

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

在 $HOME/.inputrc 中,我相信这会将您想要的行为与向上和箭头键联系起来。详细地说,“man readline”告诉我们 history-search-{forward,backward} 将考虑在命令行上输入的当前字符串:

   history-search-forward
          Search  forward  through  the history for the string of characters between the start of the current line
          and the current cursor position (the point).  This is a non-incremental search.
   history-search-backward
          Search backward through the history for the string of characters between the start of the  current  line
          and the point.  This is a non-incremental search.

相关内容