बैश: अंतिम कमांड में एक शब्द की सभी घटनाओं को बदलें


14

लगभग गलती से, मुझे लगा कि आप कुछ ऐसा कर सकते हैं:

$ cp foo.data bar1.data
$ ^bar1^bar2

और bar2.dataइसके बजाय उसी कमांड को चलाता है bar1.data। अब, यदि मेरे पास लक्ष्य शब्द की कई घटनाएं हैं, तो कैसे करें? उदाहरण के लिए:

$ cp foo.data bar.data
$ ^data^index

यह केवल पहले dataएक्सटेंशन की जगह लेता है । दोनों को बदलने के लिए मुझे यह कैसे मिलेगा?

जवाबों:


22

मुझे लगता ^data^indexहै कि इसके बराबर है !!:s/data/index, इसलिए यह केवल पहले शब्द का स्थान लेगा। यदि आप पूरी पंक्ति को प्रतिस्थापित करना चाहते हैं, तो मुझे लगता है कि आपको उपयोग करना होगा!!:gs/data/index/


यह प्रतिस्थापन (: gs / data / index) एक बैश फीचर है या क्या यह किसी अन्य प्रोग्राम को कॉल कर रहा है?
जॉनटॉर्टुगो


7

आप इसे ^: और अंत में जोड़कर कर सकते हैं।
^: और दो घटनाओं को प्रतिस्थापित करेगा
^: g & सभी को प्रतिस्थापित करेगा

$ cp foo.data bar.data
$ ^ डेटा ^ इंडेक्स ^: &
$ cp foo.index bar.index
$ cp foo.data bar.data joe.data doe.data
$ ^ डेटा ^ इंडेक्स ^: g &
$ cp foo.index bar.index joe.index doe.index

sidenote: पुस्तक 'कमांड लाइन कुंगफू' में लिखा है
कि ^: और सभी को बदल देगा


1
दरअसल, दो बार^:& प्रतिस्थापन करेंगे । सभी घटनाओं को करने के लिए , उपयोग करें ( "वैश्विक" के लिए खड़ा है)। ^:g&g
जी-मैन का कहना है कि 20-14 पर मोनिका '

Tnx! मैंने कभी भी दो से अधिक घटनाओं के लिए इसका परीक्षण नहीं किया। एक पुस्तक में कमांड पढ़ें।
नोट 89
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.