बैश इतिहास शॉर्टकट के अधिकांश गाइड उपलब्ध हर एक को विस्तृत रूप से सूचीबद्ध करते हैं। इसके साथ समस्या यह है कि मैं एक बार शॉर्टकट का उपयोग करूंगा, फिर सभी संभावनाओं को आजमाते हुए शीशा लगाऊंगा। तब मैं अपने कार्य दिवस पर चला जाता और उन्हें पूरी तरह से भूल जाता, केवल प्रसिद्ध !! को बनाए रखता। ट्रिक मैंने तब सीखी जब मैंने पहली बार बैश का उपयोग करना शुरू किया।
इसलिए उनमें से अधिकांश कभी भी स्मृति के लिए प्रतिबद्ध नहीं थे।
यह लेख उन शॉर्टकट की रूपरेखा देता है जिनका मैं वास्तव में उपयोग करता हूं हर दिन। यह मेरी पुस्तक की कुछ सामग्री पर आधारित है, लर्न बैश द हार्ड वे; (अधिक जानने के लिए आप इसका पूर्वावलोकन पढ़ सकते हैं)।
जब लोग मुझे इन शॉर्टकट्स का उपयोग करते हुए देखते हैं, तो वे अक्सर मुझसे पूछते हैं, "आपने वहां क्या किया?" इसके लिए न्यूनतम प्रयास या बुद्धिमत्ता की आवश्यकता होती है, लेकिन वास्तव में उन्हें सीखने के लिए, मैं एक सप्ताह के लिए प्रत्येक दिन एक का उपयोग करने की सलाह देता हूं, फिर अगले एक पर जाने की सलाह देता हूं। उन्हें अपनी उंगलियों के नीचे लाने के लिए अपना समय निकालना उचित है, क्योंकि आप जो समय बचाते हैं वह लंबे समय में महत्वपूर्ण होगा।
1. "आखिरी तर्क" एक: !$
यदि आप इस लेख से केवल एक शॉर्टकट लेते हैं, तो इसे इसे बनाएं। यह आपकी लाइन में अंतिम कमांड के अंतिम तर्क को प्रतिस्थापित करता है।
इस परिदृश्य पर विचार करें:
$ mv /path/to/wrongfile /some/other/place
mv: cannot stat '/path/to/wrongfile': No such file or directory
ठीक है, मैंने गलत फ़ाइल डाल दी है मेरे आदेश में फ़ाइल नाम। मुझे राइटफाइल . डालना चाहिए था इसके बजाय।
आप अंतिम कमांड को फिर से टाइप करने का निर्णय ले सकते हैं और गलतफाइल को पूरी तरह से राइटफाइल से बदल सकते हैं। इसके बजाय, आप टाइप कर सकते हैं:
$ mv /path/to/rightfile !$
mv /path/to/rightfile /some/other/place
और आदेश काम करेगा।
बैश में शॉर्टकट के साथ एक ही चीज़ को प्राप्त करने के अन्य तरीके हैं, लेकिन अंतिम कमांड के अंतिम तर्क का पुन:उपयोग करने की यह ट्रिक वह है जिसका मैं सबसे अधिक उपयोग करता हूं।
2. "n वें तर्क" एक: !:2
कभी ऐसा कुछ किया है?
$ tar -cvf afolder afolder.tar
tar: failed to open
कई अन्य लोगों की तरह, मुझे tar . के तर्क मिलते हैं (और ln ) जितना मैं स्वीकार करना चाहता हूं उससे अधिक बार गलत।
जब आप इस तरह के तर्कों को मिलाते हैं, तो आप दौड़ सकते हैं:
$ !:0 !:1 !:3 !:2
tar -cvf afolder.tar afolder
और आपकी प्रतिष्ठा बच जाएगी।
अंतिम कमांड के आइटम शून्य-अनुक्रमित हैं और !: के बाद की संख्या के साथ प्रतिस्थापित किए जा सकते हैं ।
जाहिर है, आप इसका उपयोग उन सभी के बजाय अंतिम आदेश से विशिष्ट तर्कों का पुन:उपयोग करने के लिए भी कर सकते हैं।
3. "सभी तर्क" एक: !:1-$
कल्पना कीजिए कि मैं एक कमांड चलाता हूं जैसे:
$ grep '(ping|pong)' afile
तर्क सही हैं; हालांकि, मैं पिंग . से मिलान करना चाहता हूं या पोंग एक फ़ाइल में, लेकिन मैंने grep . का उपयोग किया के बजाय egrep ।
मैं egrep . लिखना शुरू करता हूं , लेकिन मैं अन्य तर्कों को फिर से टाइप नहीं करना चाहता। इसलिए मैं !:1$ . का उपयोग कर सकता हूं पिछले कमांड के सभी तर्कों को दूसरे से पूछने के लिए शॉर्टकट (याद रखें कि वे शून्य-अनुक्रमित हैं) से अंतिम ($ द्वारा दर्शाए गए) साइन)।
$ egrep !:1-$
egrep '(ping|pong)' afile
ping
आपको 1-$ . चुनने की आवश्यकता नहीं है; आप 1-2 . जैसा एक सबसेट चुन सकते हैं या 3-9 (यदि पिछली कमांड में आपके पास इतने तर्क थे)।
4. "अंतिम लेकिन n " एक: !-2:$
ऊपर दिए गए शॉर्टकट बहुत अच्छे होते हैं जब मुझे तुरंत पता चल जाता है कि अपने अंतिम कमांड को कैसे ठीक करना है, लेकिन अक्सर मैं बाद कमांड चलाता हूं मूल एक, जिसका अर्थ है कि अंतिम आदेश अब वह नहीं है जिसका मैं संदर्भ देना चाहता हूं।
उदाहरण के लिए, mv . का उपयोग करना पहले से उदाहरण, अगर मैं अपनी गलती का पालन ls . के साथ करता हूं फ़ोल्डर की सामग्री की जाँच करें:
$ mv /path/to/wrongfile /some/other/place
mv: cannot stat '/path/to/wrongfile': No such file or directory
$ ls /path/to/
rightfile
मैं अब !$ . का उपयोग नहीं कर सकता शॉर्टकट।
इन मामलों में, मैं एक -n . सम्मिलित कर सकता हूं : (जहां n इतिहास में वापस जाने के लिए आदेशों की संख्या है) ! . के बाद किसी पुराने आदेश से अंतिम तर्क प्राप्त करने के लिए:
$ mv /path/to/rightfile !-2:$
mv /path/to/rightfile /some/other/place
दोबारा, एक बार जब आप इसे सीख लेते हैं, तो आपको आश्चर्य हो सकता है कि आपको कितनी बार इसकी आवश्यकता है।
5. "मुझे फ़ोल्डर प्राप्त करें" एक: !$:h
यह देखने में कम आशाजनक लगता है, लेकिन मैं इसे रोजाना दर्जनों बार इस्तेमाल करता हूं।
कल्पना कीजिए कि मैं इस तरह एक कमांड चलाता हूं:
$ tar -cvf system.tar /etc/system
tar: /etc/system: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors.
पहली चीज जो मैं करना चाहता हूं वह है /etc फ़ोल्डर देखने के लिए कि वहां क्या है और मैंने क्या गलत किया है इसका पता लगाएं।
मैं इसे एक झटके में कर सकता हूं:
$ cd !$:h
cd /etc
यह कहता है:"अंतिम तर्क को अंतिम कमांड (/etc/system .) पर प्राप्त करें ) और इसके अंतिम फ़ाइल नाम घटक को हटा दें, केवल /etc . को छोड़कर ।"
6. "वर्तमान पंक्ति" एक: !#:1
वर्षों से, मैं कभी-कभी सोचता था कि क्या मैं इसे देखने और सीखने से पहले वर्तमान लाइन पर एक तर्क का संदर्भ दे सकता हूं। काश मैंने ऐसा बहुत पहले किया होता। मैं आमतौर पर इसका उपयोग बैकअप फ़ाइलें बनाने के लिए करता हूँ:
$ cp /path/to/some/file !#:1.bak
cp /path/to/some/file /path/to/some/file.bak
लेकिन एक बार उंगलियों के नीचे, यह एक बहुत तेज़ विकल्प हो सकता है …
7. "खोज और बदलें" वाला: !!:gs
यह संदर्भित कमांड में खोज करता है और पहले दो / . में जो है उसे बदल देता है दूसरे दो में क्या है के साथ वर्ण।
मान लीजिए कि मैं दुनिया को बताना चाहता हूं कि मेरे s key काम नहीं करती और f . आउटपुट करती है इसके बजाय:
$ echo my f key doef not work
my f key doef not work
तब मुझे एहसास हुआ कि मैं सिर्फ f . मार रहा था दुर्घटना से कुंजी। सभी f . को बदलने के लिए s s . के साथ तों, मैं टाइप कर सकता हूँ:
$ !!:gs/f /s /
echo my s key does not work
my s key does not work
यह केवल एकल वर्णों पर कार्य नहीं करता है; मैं शब्दों या वाक्यों को भी बदल सकता हूँ:
$ !!:gs/does/did/
echo my s key did not work
my s key did not work
उनका परीक्षण करें
केवल आपको यह दिखाने के लिए कि इन शॉर्टकट्स को कैसे जोड़ा जा सकता है, क्या आप यह पता लगा सकते हैं कि ये टोनेल क्लिपिंग क्या आउटपुट देंगे?
$ ping !#:0:gs/i/o
$ vi /tmp/!:0.txt
$ ls !$:h
$ cd !-2:h
$ touch !$!-3:$ !! !$.txt
$ cat !:1-$
निष्कर्ष
बैश दिन-प्रतिदिन के कमांड-लाइन उपयोगकर्ता के लिए शॉर्टकट का एक सुंदर स्रोत हो सकता है। जबकि सीखने के लिए हज़ारों युक्तियाँ और तरकीबें हैं, ये मेरे पसंदीदा हैं जिनका मैं अक्सर उपयोग करता हूँ।
यदि आप बैश जो कुछ भी आपको सिखा सकते हैं, उसमें और गहराई तक जाना चाहते हैं, तो मेरी किताब उठाइए, लर्न बैश द हार्ड वे या मेरा ऑनलाइन पाठ्यक्रम देखें, मास्टर द बैश शेल।
यह लेख मूल रूप से इयान के ब्लॉग, Zwischenzugs.com पर पोस्ट किया गया था, और अनुमति के साथ इसका पुन:उपयोग किया जाता है।