2011-11-22 13 views
5

मैं जानना चाहता हूं कि कैसे/अगर मैं अपने टर्मिनल इतिहास से कमांड का पुन: उपयोग कर सकता हूं, लेकिन एक संशोधित संस्करण में।टर्मिनल इतिहास से कमांड पर खोजें और प्रतिस्थापित करें

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

यह एक बहुत ही सरल उदाहरण है, और निश्चित रूप से मैं बस इतिहास से आदेश का उपयोग कर सकते हैं और मैन्युअल दो 2 रों की जगह है, लेकिन वहाँ एक और अधिक सुरुचिपूर्ण तरीका है: यहाँ एक उदाहरण है?

धन्यवाद आपके समय के लिए बहुत कुछ!

उत्तर

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 कमांड लाइन पर वैश्विक प्रतिस्थापन निर्दिष्ट करता है। ! इतिहास से एक रेखा को संदर्भित करता है - जो अधिक विशिष्ट हो सकता है, यदि आप इतिहास में आगे की ओर से एक कमांड खींचना चाहते हैं जो तुरंत पिछली कमांड है। Event Designators पर bash(1) का अनुभाग देखें।

+0

ग्रेट, एक आकर्षण की तरह काम करता है - बहुत बहुत धन्यवाद :) – canavanin

+1

निफ्टी सामान, एक अप-वोट है! – plundra

+0

वाह वास्तव में अच्छा है। –

संबंधित मुद्दे