相关疑难解决方法(0)

^x^y unix 技巧适用于最后一个命令中的所有实例?

我最喜欢的 Unix 技巧之一是^x^y,它将采用最后一个命令并将“x”的第一个实例替换为“y”。但是,我想知道是否有类似的技巧可以在最后一个命令中用“y”替换“x”的所有实例?

command-line shell bash command-history

119
推荐指数
3
解决办法
3万
查看次数

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

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

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
查看次数

如何执行使用 echo 和 sed 生成的 shell 命令?

我试过这样做:

echo " mv /server/today/logfile1 /nfs/logs/ && gzip /nfs/logs/logfile1" | sed 's|logfile1|logfile2|g'
Run Code Online (Sandbox Code Playgroud)

它打印:

mv /server/today/logfile2 /nfs/logs/ && gzip /nfs/logs/logfile2
Run Code Online (Sandbox Code Playgroud)

这是一个 bash 命令。我怎样才能让它被执行,而不仅仅是打印它?

bash sed command

4
推荐指数
1
解决办法
4万
查看次数

标签 统计

bash ×3

command-history ×2

command-line ×2

command ×1

sed ×1

shell ×1