如何在不执行命令的情况下从命令历史记录中调出特定命令


13

例如,在bash中,我可以键入!xyz它将运行以开头的最后一个命令xyz

如何显示我键入的最后一个命令,xyz但不执行该命令?
例如,这样我可以在执行之前更改参数。

Answers:


20

您可以这样操作:在命令提示符下,按Ctrl+ r,然后键入要调用的命令(对于您的情况)xyz。这将向您显示完整的命令而不执行它。


1
!符号更有用,因为您可以多次按Ctrl-r以进一步循环到匹配历史记录中。当到达适当的位置时,您可以尝试不使用Enter而是使用Ctrl-o执行以获取更多利润。
kubanczyk

12

尝试!xyz:p; 它会在不执行命令的情况下将命令调回到历史的顶部,因此例如向上箭头可以立即访问它以进行交互式编辑。

顺便说一句,我做回顾与正则表达式的命令,可以想见挖东西损坏时,由于匆忙过这样的做法!r,意在回顾最近的rsync ...命令,拉回并执行一个rm *已被压入堆栈比rsync更新。


谢谢,这是一个好习惯。我做rm -rf ./*了一段时间以来从未如此感激过。仅供参考!xyz:p,谢谢您的配合,但除了ctrl-r解决方案外,还需要进行一些额外的按键操作。
Mtl Dev

@MtlDev是的;我发现^ R解决方案最适合EMACSey人,而!-path最适合vi像我这样的olator。
MadHatter

1
  1. 执行以下命令。它将回显最后执行的命令。您可以复制和编辑命令。此命令在debian中进行了测试。

    历史|尾巴-2 | grep -v历史记录| 切-d''-f4-

  2. 或按住ctrl + R并键入上一个命令的起始字母。它将根据您的输入列出您先前执行的命令。一旦显示所需命令,只需按右箭头即可选择该命令。


1
第一个命令是如此顺利!我认为历史上只处理命令要比编写所有^ __ ^
Grajdeanu Alex更快。

1

如果反向历史记录搜索失败,请执行以下任一操作:

$ history | grep WHAT_YOU_LOOK_FOR

要么:

$ grep WHAT_YOU_LOOK_FOR ~/.bash_history
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.