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


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.