search并replaceterminal历史logging中的命令

我想知道如何/如果我可以从我的terminal历史logging,但在一个修改后的版本中重用一个命令。 这是一个例子:

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

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

非常感谢您的时间!

如果只有一个你想替换的实例, 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的部分。