小编Jef*_*ves的帖子

如何快速替换管道命令链中的参数

假设我刚刚输入此命令来计算包含特定字符串的行数:

me@machine $ command-producing-multi-line-output | grep -i "needle" | wc -l
Run Code Online (Sandbox Code Playgroud)

现在我怎么能快速"needle"用其他词代替?


当前低效的解决方案

现在我:

  1. 按下Up键盘以加载最后一个命令。
  2. LeftCtrl+Left直到到达"needle"
  3. BackspaceCtrl+w删除单词。
  4. 键入或粘贴新单词。
  5. 击中Enter

这似乎非常低效。


尝试的非工作解决方案

我试图研究历史捷径,如!!:sg/needle/new-needle;但这有几个问题:

  1. 你不能按Up!!:sg/needle/new-needle后面的命令行上。这样做只会显示它扩展到的内容(直接回到原始问题)。
  2. 用另一个新针重复此操作需要您同时更换needlenew-needle(即!!:sg/new-needle-from-before/yet-another-new-needle)。
  3. 无论针有多长,您都需要输入整个needle而不是使用类似!:4$4(即!!:sg/!:4/new-needle!!:sg/$4/new-needle)之类的东西来节省时间/击键。

我也发现了类似!:^-3 "new-needle" !:5-$但也有问题的东西:

  1. 它在历史上不断扩展,因此无法快速重复使用。
  2. 即使它没有扩展,您也会遇到需要替换命令链中间的单词的原始问题。

我相信必须有一些超快速的方法来做我想做的事情,而且那里的一些 linux 专家知道这一点。如果您对此有任何意见或建议,我将不胜感激。


编辑:

背景 …

command-line bash command-history

11
推荐指数
4
解决办法
1119
查看次数

标签 统计

bash ×1

command-history ×1

command-line ×1