有没有办法(或特定的 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.