在进行交互式bash会话时,我想念的Windows shell的一个方面是 F8 键,你开始输入一个命令,点击 F8 然后shell找到了在历史记录中输入的最新命令与您目前输入的内容相匹配。 e.g。
me@Ubntu07:~>cd /home/jb<F8 Key Here>
提出我之前的命令:
me@Ubntu07:~>cd /home/jboss/server/default/log
有没有办法在bash中这样做?
答案 0 :(得分:15)
在开始输入之前按 Ctrl - R 。
(可能还有另一个版本根据已输入的内容找到命令 - 我不知道,因为 Ctrl - R 一直都足够好我:)
按 Ctrl - R 再次显示下一场比赛等。
答案 1 :(得分:6)
My Gentoo的配置方式我可以按PgUp和PgDn滚动命令历史记录中的那些命令,这些命令以我当前在命令行中的内容开头。
# cd<PgUp>
结果:
# cd hydrogen
这几乎是相同的功能。它在我的/etc/inputrc
中定义为以下行:
# mappings for "page up" and "page down" to step to the beginning/end
# of the history
"\e[5~": history-search-backward
"\e[6~": history-search-forward
答案 2 :(得分:2)
在您的情况下,!jb
将打印,然后运行该命令。
如,
$ nano logconfig.properties
$ !n
nano logconfig.properties
$
当然,如果您想要安全起见,请先使用ctrl-r调出交互式命令历史记录。
答案 3 :(得分:2)
Ctrl + R 执行历史记录搜索。有点不同的是 first 你点击 Ctrl + R 然后然后键入你要找的东西。
答案 4 :(得分:1)
如果您只是在谈论命令,可以使用!<cmd>
来完成最后一个命令。例如,假设您刚才输入python runscript.py
;你可以输入:
!py
或沿着那些行再次运行该命令。
要重复命令的参数,您可以执行以下操作:
echo !py:1
在这个例子中,会将runscript.py
回显给终端。冒号后面的数字是指您要从给定命令中使用的参数。
关于bash历史here还有很多其他重要信息。
答案 5 :(得分:1)
我的.inputrc文件中有这些行:
"\e[A": history-search-backward
"\e[B": history-search-forward
这会将历史记录搜索绑定到向上和向下箭头键。所以你可以开始输入一个命令,kextload
说,然后每次点击向上箭头都会用上一个以kextload
开头的命令完成这一行。
我的所有配置文件都是github上的公共文件。
答案 6 :(得分:0)
恕我直言'!'是危险的,就像在错误的shell中做的那样,它有一个与你期望的不同的rm命令。至少 Ctrl + R 可让您在执行之前看到所选的完整命令行。
答案 7 :(得分:0)
很好的解决方案。谢谢你们。 Ctrl + R 正是我想要的,尽管inputrc选项是非常有用的附加组件。
干杯。
答案 8 :(得分:0)
如果使用vi输入模式(在bash中设置-o vi或在.inputrc中通过set edit-mode vi设置),则可以使用普通的vi命令搜索历史记录(/)。这也为您提供了完整的正则表达式,这有助于查找复杂的命令。