bash 是否有一个组合键可以自动竞争历史命令?例如,在 ipython 和 matlab 中,这是通过在输入几个字符后按向上箭头来实现的。
答案1
首先,tab在 bash 中点击会更好,因为它会自动完成 PATH 中的所有可执行文件,无论它们是否在历史记录中。也就是说,有多种方法可以从历史记录中获取命令:
使用它的号码。如果你知道你想要的命令是 3 个命令之前的,你可以运行
!-3
这将重新执行您之前运行的三个命令。
搜索一下。输入Ctrlr并开始输入任何文本。将显示历史记录中与您的文本匹配的第一个命令,点击enter将执行它。
击中▲(向上箭头)。这将显示最后一个命令,再次按下它,您将进入命令历史记录。当你找到你想要的那个时,点击enter。
将这些行添加到您的文件中
~/.inputrc
(如果文件不存在则创建该文件):"\e[A": history-search-backward "\e[B": history-search-forward
要立即加载文件,请运行bind -f ~/.inputrc
(来源)。现在,输入您之前运行的命令之一的前几个字符,然后点击▲。将显示历史记录中以这些字符开头的第一个命令。再次点击▲即可查看其余内容,enter找到所需内容后点击即可。
- 使用
history
命令。正如@Isaac 所解释的,这将列出存储在历史文件中的所有命令。
答案2
您可以使用命令检查历史序列上的命令位置history
。然后就可以执行了!<number_in_the_sequence>
。我希望这有帮助。
答案3
您还可以使用history
特定命令的输出并通过管道传输。
例如,如果您cd
一整天都在文件系统中工作,只需要提醒哪些目录正在处理
history | grep cd
然后,您可以复制/粘贴该命令,或者!n
(其中 n 是历史文件中的行号)重新执行它。