बैश इतिहास शॉर्टकट के अधिकांश गाइड उपलब्ध हर एक को पूरी तरह से सूचीबद्ध करते हैं। उस दृष्टिकोण की समस्या यह है कि मैं एक शॉर्टकट का उपयोग एक बार करूंगा, फिर सभी संभावनाओं को आजमाते हुए चकाचौंध हो जाऊंगा। फिर मैं अपने कार्य दिवस पर चला जाऊंगा और उन्हें पूरी तरह से भूल जाऊंगा, केवल प्रसिद्ध !! ट्रिक को बरकरार रखूंगा जो मैंने पहली बार बैश का उपयोग शुरू करते समय सीखा था।
इसलिए उनमें से अधिकांश कभी भी मेमोरी में कमिट नहीं हुए।
यह लेख उन शॉर्टकट की रूपरेखा तैयार करता है जिन्हें मैं वास्तव में हर दिन उपयोग करता हूं। यह मेरी किताब, Learn Bash the hard way की कुछ सामग्री पर आधारित है; (आप इसका पूर्वावलोकन पढ़कर अधिक जान सकते हैं)।
जब लोग मुझे इन शॉर्टकट का उपयोग करते देखते हैं, तो वे अक्सर मुझसे पूछते हैं, "आपने वहां क्या किया!?" इसमें न्यूनतम प्रयास या बुद्धिमत्ता की आवश्यकता होती है, लेकिन वास्तव में उन्हें सीखने के लिए, मैं एक सप्ताह के लिए हर दिन एक का उपयोग करने की सलाह देता हूं, फिर अगले पर जाएं। उन्हें अपनी उंगलियों के नीचे लाने के लिए अपना समय लेना उचित है, क्योंकि लंबे समय में आप जो समय बचाएंगे वह महत्वपूर्ण होगा।
1. "अंतिम तर्क" वाला: !$
यदि आप इस लेख से केवल एक शॉर्टकट लेते हैं, तो इसे ही लें। यह अंतिम कमांड के अंतिम तर्क को आपकी लाइन में प्रतिस्थापित करता है।
इस परिदृश्य पर विचार करें:
$ mv /path/to/wrongfile /some/other/place
mv: cannot stat '/path/to/wrongfile': No such file or directory
आह, मैंने अपने कमांड में wrongfile फाइलनाम डाल दिया। मुझे इसके बजाय rightfile डालना चाहिए था।
आप अंतिम कमांड को पूरी तरह से रीटाइप करने और wrongfile को rightfile से बदलने का निर्णय ले सकते हैं। इसके बजाय, आप टाइप कर सकते हैं:
$ 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
आर्गुमेंट सही हैं; हालांकि, मैं किसी फाइल में ping या pong से मेल खाना चाहता हूं, लेकिन मैंने 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 की काम नहीं करती और इसके बजाय f आउटपुट करती है:
$ echo my f key doef not work
my f key doef not work
तब मुझे एहसास होता है कि मैं गलती से f की दबा रहा था। सभी f को 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-$
निष्कर्ष
बैश दिन-प्रतिदिन कमांड-लाइन उपयोगकर्ता के लिए शॉर्टकट का एक सुंदर स्रोत हो सकता है। जबकि सीखने के लिए हजारों टिप्स और ट्रिक्स हैं, ये मेरे पसंदीदा हैं जिन्हें मैं अक्सर उपयोग करता हूं।
यदि आप बैश जो कुछ भी सिखा सकता है उसमें और भी गहराई से गोता लगाना चाहते हैं, तो मेरी किताब, Learn Bash the hard way लें या मेरा ऑनलाइन कोर्स, Master the Bash shell देखें।
यह लेख मूल रूप से इयान के ब्लॉग, Zwischenzugs.com पर पोस्ट किया गया था, और अनुमति के साथ पुन: उपयोग किया गया है।