【问题标题】:Run a previous command changing one argument运行上一个命令更改一个参数
【发布时间】:2020-05-01 23:22:03
【问题描述】:

给定我历史记录中的一个命令,我如何运行相同的命令来更改一个参数?

例如,如果命令 34 是 script.sh a b c,我如何使用某种参数替换来运行命令 script.sh a fff c

假设在现实生活中,b 不容易键入,因此使用通用字符串替换机制是不合理的。我知道我可以使用编辑并执行,但我正在寻找一种不需要打开文本编辑器的方法。我想有类似!34:blahblahblah 的东西,但我不知道该怎么做。

我尝试阅读有关 zsh 替换的手册,但我感觉我不知道要查找哪些关键字。

编辑:我了解历史并使用 readline 或编辑并执行来编辑评论。我正在寻找更像“与命令 34 相同,但将第三个参数更改为 blah,类似于人们如何编写 !34:3 来引用命令 34 上的参数。

【问题讨论】:

  • 你试过向上箭头键吗?大多数 shell 可以通过按向上和向下箭头键重新使用旧命令,就像滚动命令一样。
  • 事件更好地搜索你的历史,使用reverse-i-searchCtrl + R
  • 我知道如何找到以前的命令。我试图澄清我上面的问题。

标签: zsh history


【解决方案1】:

我能想到的唯一可能就是比较麻烦

 !!:0-2 new-argument !!:4

!!:0-2 重复命令及其前两个参数,!!:4 是最后一个命令的最后一个参数(如果您愿意,也可以写成!$)。

【讨论】:

  • 呃。我希望有更好的东西。我想编辑和执行对我来说是阻力最小的选择。谢谢。
【解决方案2】:

对于我们可以执行的确切 las 命令:

^b^fff

使用插入符号表示您要替换的内容和替换。

【讨论】:

  • 谢谢。在这种情况下,我想在我的历史记录中更早地更改一个命令,并且我不想匹配 b,因为通常这是一个要匹配的长字符串。
猜你喜欢
  • 2013-06-08
  • 2012-04-10
  • 2014-09-19
  • 1970-01-01
  • 2013-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多