2011-11-22 127 views
5

我想知道如何在终端历史记录中重用命令,但是在修改后的版本中。这里有一个例子:搜索并替换终端历史记录中的命令

$ filter_script file2 > output_file2 
$ # ... 
# now run the same command, but replace '2' with '4' 
$ filter_script file4 > output_file4 

这是一个非常简单的例子,当然我可以简单地从历史访问命令,手动替换两个2 S,但有一个更优雅的方式?

非常感谢您的时间!

回答

12

如果只有一个实例不管它是你想要更换,bash(1)有一个简单的功能,在csh(1)首先介绍:

^old^new 

new取代old的第一个实例:

$ filter_script file2 > output_file2 
$ ^2^4 
filter_script file4 > output_file2 

如果要替换全部的实例,则需要更多的输入:

$ filter_script file2 > output_file2 
$ !:gs/2/4/ 
filter_script file4 > output_file4 

g指定全球替换在命令行上。 !指的是历史中的一行 - 如果您想从历史上的前一个命令中撤回命令,则可能更具体。请参阅bash(1)关于Event Designators的部分。

+0

太棒了,像一个魅力的作品 - 非常感谢:) – canavanin

+1

漂亮的东西,有投票! – plundra

+0

哇,这真的很酷。 –

相关问题