मेरी पसंदीदा यूनिक्स ट्रिक्स में से एक है ^x^y
, जो अंतिम कमांड लेगी और "x" के पहले उदाहरण को "y" से बदल देगी। हालांकि, मैं सोच रहा हूं कि क्या एक समान चाल अंतिम कमांड में "y" के साथ "x" के सभी उदाहरणों को बदलने के लिए काम करती है ?
मेरी पसंदीदा यूनिक्स ट्रिक्स में से एक है ^x^y
, जो अंतिम कमांड लेगी और "x" के पहले उदाहरण को "y" से बदल देगी। हालांकि, मैं सोच रहा हूं कि क्या एक समान चाल अंतिम कमांड में "y" के साथ "x" के सभी उदाहरणों को बदलने के लिए काम करती है ?
जवाबों:
आप !!:gs/search/replace/
जो चाहते हैं उसे करने के लिए नोटेशन का उपयोग कर सकते हैं। यह वैश्विक खोज और प्रतिस्थापन ( :gs
) का उपयोग करता है :
इससे पहले
$ echo "harm warm swarm barm"
harm warm swarm barm
उपरांत
$ !!:gs/arm/orn/
echo "horn worn sworn born"
horn worn sworn born
[subhrcho@slc04lyo pcbpel]$ echo "hat that bat" hat that bat [subhrcho@slc04lyo pcbpel]$ !!:gs/at/xx/ echo "hxx that bat" hxx that bat
। मैं क्या खो रहा हूँ?
bash --version
= 4.2.45 (1) -release।
मेरा मानना है कि हर घटना ^string1^string2
को bash
बदलने के लिए कुछ जोड़ने का एक आसान तरीका है । जैसा कि स्लम बताते हैं, आपको लिखना होगा !!:gs/string1/string1
।
लेकिन में zsh
, आप बस जोड़ सकते हैं :G
:
$ echo foo foo
foo foo
$ ^foo^bar^:G
echo bar bar
bar bar
दोनों में bash
और zsh
आप भी fc -s
इस तरह का उपयोग कर सकते हैं :
$ echo foo foo
foo foo
$ fc -s foo=bar
echo bar bar
bar bar
यह अक्सर एक उपनाम में बनाया जाता है, जिसे r
आप बस कर सकते हैं:
$ echo foo foo
foo foo
$ r foo=bar
echo bar bar
bar bar
मेरा मानना है कि सबसे अच्छा विकल्प ": &" का उपयोग करना है
$ echo "dog cat dog"
$ ^dog^cat^:&
echo "cat cat cat"
cat cat cat
:&
अधिक से अधिक जोड़ने की आवश्यकता होगी क्योंकि प्रतिस्थापित करने के लिए अधिक घटनाएं हैं।
command-history
टैग का उपयोग करते हैं । जोड़ा गया। इसके अलावा, मुझे लगता है कि आपbash
शेल का जिक्र कर रहे हैं ?