2011-11-22 158 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

哇,這真的很酷。 –

相關問題