如何从命令历史记录中调用特定命令而不执行它

如何从命令历史记录中调用特定命令而不执行它

例如,在 bash 中我可以输入!xyzwhich 将运行我最后输入的以 开头的命令xyz

我怎样才能调出我最后输入的命令xyz但不执行它?
例如,这样我可以在执行之前更改参数....

答案1

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

答案2

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

顺便说一句,我习惯在调用可能挖掘出有害信息的正则表达式命令时这样做,因为一个匆忙的!r,旨在调用最近的rsync ...命令,被拉回来了并执行rm *rsync 更晚被推送到堆栈。

答案3

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

    历史|tail -2 | grep -v 历史| cut -d ' ' -f4-

  2. 或者按住 ctrl+R 并输入上一个命令的首字母。它会根据你的输入列出你之前执行的命令。一旦它显示所需的命令,只需按右箭头即可选择该命令。

答案4

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

$ history | grep WHAT_YOU_LOOK_FOR

或者:

$ grep WHAT_YOU_LOOK_FOR ~/.bash_history

相关内容