如何将脱字符替换应用于我的第 n 个最后一个命令?

如何将脱字符替换应用于我的第 n 个最后一个命令?

我经常发现自己必须对文件执行冗长的命令,然后使用其他命令处理结果。为了处理下一个文件,我通常通过按键重新运行相同的命令,Up直到找到我想要的命令,并艰难地用新文件名替换旧文件名。

有没有办法将插入符号替换 ( ^oldfile^newfile) 与n最后一个命令?我曾(失败)尝试通过管道传输nth-last 命令进入替换,如下所示:

$ !-4 | ^old^new

当然,我愿意接受其他建议。这些小捷径确实有助于提高生产力......

答案1

你不能用快速替换直接,因为^foo^bar是简写:

!!:s/foo/bar/

!!部分(指最后一个命令)不是快速语法的一部分(这就是使它快速的原因),但是您直接使用较长的语法,然后将其修改!!为您想要的任何内容:

!-4:s/foo/bar/

我尽可能多地解释了历史语法这个帖子;最后一部分包括:s修饰符

答案2

您可以将冗长的命令编写为 shell 函数,该函数将文件名作为参数,然后只需function filename在需要时键入即可。

相关内容