从终端历史记录中搜索和替换命令

时间:2011-11-22 09:21:32

标签: linux shell unix

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

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

这是一个非常简单的例子,当然我只需从历史记录中访问命令并手动替换两个2,但是有更优雅的方式吗?

非常感谢你的时间!

1 个答案:

答案 0 :(得分:13)

如果您想要替换的只有一个实例,bash(1)首先在csh(1)中引入了一个简单的功能:

^old^new

会将old的第一个实例替换为new

$ 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部分。