बैश शेल मानक टर्मिनल हैसबसे लिनक्स वितरण के साथ पर्यावरण शामिल है, macOS के साथ शामिल है, और विंडोज 10 पर स्थापना के लिए उपलब्ध है। यह आपके द्वारा टाइप किए गए आदेशों को याद करता है और उन्हें इतिहास फ़ाइल में संग्रहीत करता है। आप शायद बैश इतिहास की कुछ मूल बातें जानते हैं, लेकिन यह आपके द्वारा महसूस किए जाने से बहुत अधिक शक्तिशाली है।
कुंजीपटल अल्प मार्ग
सम्बंधित: बैश के लिए सबसे अच्छा कीबोर्ड शॉर्टकट (उर्फ लिनक्स और मैकओएस टर्मिनल)
अपने बैश इतिहास को स्क्रॉल करने के लिए, आप कुछ बैश के कई उपयोगी कीबोर्ड शॉर्टकट का उपयोग कर सकते हैं। इन शॉर्टकट्स को दबाएं और आपके द्वारा पहले इस्तेमाल की गई कमांड्स प्रॉम्प्ट पर दिखाई देंगी।
- ऊपर की ओर तीर या Ctrl + P: अपने इतिहास में पिछली कमांड पर जाएं। आपके द्वारा उपयोग किए गए आदेशों के माध्यम से पीछे की ओर चलने के लिए कई बार कुंजी दबाएं।
- नीचे का तीर या Ctrl + N: अपने इतिहास में अगले कमांड पर जाएं। जिन आदेशों का आपने उपयोग किया है, उनके माध्यम से आगे बढ़ने के लिए कई बार कुंजी दबाएं।
- Alt + R: यदि आपने वर्तमान लाइन पर इसे संपादित किया है, तो अपने इतिहास से आपके द्वारा खींची गई कमांड में कोई भी परिवर्तन वापस कर दें।
बैश में एक विशेष "रिकॉल" मोड भी होता है, जिसका उपयोग आप उन कमांड के लिए खोज करने के लिए कर सकते हैं जिन्हें आप पहले चला रहे हैं, बजाय एक-एक करके उनके माध्यम से स्क्रॉल करने के।
- Ctrl + R: आपके द्वारा प्रदान किए गए वर्णों से मेल खाते अंतिम आदेश को याद करें। इस शॉर्टकट को दबाएं और कमांड के लिए अपने बैश इतिहास को खोजने के लिए टाइप करना शुरू करें।
- Ctrl + O: Ctrl + R के साथ मिली कमांड को रन करें।
- Ctrl + G: कमांड को चलाए बिना हिस्ट्री सर्चिंग मोड को छोड़ दें।
आपका बैश इतिहास देखें
आप एकल कमांड चलाकर अपने पूरे बैश इतिहास को स्क्रीन पर प्रिंट कर सकते हैं:
history
आपको अपने सभी आदेशों की एक सूची दिखाई देगीबैश इतिहास, प्रत्येक के बाईं ओर एक संख्या के साथ। इसके बगल में "1" वाला कमांड आपके बैश इतिहास में सबसे पुराना कमांड है, जबकि सबसे अधिक संख्या वाला कमांड सबसे हाल का है।
सम्बंधित: इन 8 ट्रिक्स के साथ लिनक्स टर्मिनल पावर यूजर बनें
आप आउटपुट के साथ कुछ भी कर सकते हैं। उदाहरण के लिए, आप इसे पाइप कर सकते हैं grep
अपने कमांड इतिहास को खोजने के लिए कमांड।
history | grep your_search
आप इसे पाइप भी कर सकते हैं tail
हाल ही में आपके द्वारा चलाए गए आदेशों की एक छोटी संख्या को देखने के लिए आदेश दें। उदाहरण के लिए, निम्न कमांड आपके इतिहास में अंतिम 5 प्रविष्टियाँ दिखाएगा।
history | tail -5
अपने इतिहास से कमांड चलाएं
बैश पिछली आज्ञाओं का जल्दी से "विस्तार" कर सकते हैं, याउनका विस्तार करें और उन्हें संशोधित करें। इस सुविधा को "इतिहास विस्तार" के रूप में जाना जाता है और एक विस्मयादिबोधक चिह्न का उपयोग करता है, जिसे "बैंग" के रूप में जाना जाता है। बस उन्हें प्रॉम्प्ट पर टाइप करें और उन्हें चलाने के लिए Enter दबाएं जैसे आप कोई अन्य कमांड चलाते हैं।
अपने नंबर से अपने इतिहास से एक विशिष्ट कमांड चलाने के लिए, निम्न कमांड का उपयोग करें:
!#
उदाहरण के लिए, मान लें कि आप अपने बैश इतिहास से 12 वीं कमांड चलाना चाहते हैं। जब आप इसे चलाते हैं तो यह बाईं ओर "12" के साथ है history
आदेश। आप निम्न कमांड टाइप करेंगे।
!12
आपके द्वारा चलाए गए अंतिम कमांड को फिर से चलाने के लिए, निम्न टाइप करें। इसका एक ही प्रभाव है कि पिछली कमान को देखने के लिए एक बार ऊपर तीर को दबाएं और फिर Enter दबाएं।
!!
आप एक कमांड को एक निश्चित संख्या में लाइनों को भी संदर्भित कर सकते हैं। उदाहरण के लिए, !-2
आपके द्वारा चलाए गए दूसरे से अंतिम कमांड को चलाएगा। !!
के रूप में एक ही बात का मतलब है !-1
.
यह विस्तार लाइन पर कहीं भी काम करता है। आप पहले या बाद में अपनी पसंद की कोई भी चीज जोड़ सकते हैं !!
या इस खंड में किसी भी अन्य भाव। उदाहरण के लिए, आप अपने द्वारा चलाए गए अंतिम कमांड को फिर से चलाने के लिए निम्न कमांड टाइप कर सकते हैं sudo
, यह मूल विशेषाधिकार दे रहा है। यह विशेष रूप से उपयोगी है यदि आप जोड़ना भूल जाते हैं sudo
एक कमांड चलाने से पहले।
sudo !!
या, उदाहरण के लिए, आप पिछले कमांड को फिर से चला सकते हैं और कुछ टेक्स्ट की खोज के लिए अपने आउटपुट को grep पर पाइप कर सकते हैं।
!! | grep text
अपने इतिहास में एक कमांड खोजने और उसे चलाने के लिए, निम्न टाइप करें। यह आपके द्वारा निर्दिष्ट पाठ से मेल खाने वाली अंतिम कमांड चलाएगा:
!text
इसलिए, यदि आपने हाल ही में एक कमांड चलाया, जो शुरू हुआ ping
, आप इसे खोजने के लिए निम्न कमांड चला सकते हैं। यह आपके इतिहास के माध्यम से पीछे की ओर खोजेगा, सबसे हालिया कमांड का पता लगाएगा जो "से शुरू होता है"pi
", और तुरंत इसे चलाएं:
!pi
आप एक append कर सकते हैं :p
उपरोक्त में से कोई भी विस्तार और बैश टर्मिनल को कमांड को बिना चलाए प्रिंट करेगा। यदि आप इसे चलाने से पहले सही कमांड का चयन करना चाहते हैं, तो यह उपयोगी है।
!12:p
!!:p
!text:p
अपने इतिहास से पुन: तर्क
बैश आपको एक नई कमांड चलाने की अनुमति देता है, लेकिन अपने इतिहास में पिछले आदेशों के तर्कों का उपयोग करें। यह आपको जल्दी या लंबे समय से जटिल दलीलों का पुन: उपयोग करने में मदद कर सकता है बिना उन्हें फिर से लिखें।
command !$
उदाहरण के लिए, मान लें कि आपने कमांड चलाया है touch /home/chris/some_long_file_name_you_dont_want_to_type_again
। अब आप कमांड चलाना चाहते हैं nano /home/chris/some_long_file_name_you_dont_want_to_type_again
। पूरे मामले को खरोंच से टाइप करने के बजाय, आप चला सकते हैं:
nano !$
The !$
अपने पिछले आदेश से अंतिम तर्क में स्वचालित रूप से बैश भरना होगा।
यह केवल अंतिम तर्क में भरता है । तो, यदि आप चलाते हैं ping google.com -c 4
और फिर चला ping !$
, यह सिर्फ करने के लिए विस्तार होगा "ping 4
"।
इस स्थिति को ठीक करने के लिए, आप पिछले के बजाय, लाइन पर पहले तर्क का विस्तार करने के लिए निम्नलिखित चाल का उपयोग कर सकते हैं:
command !^
तो, अगर तुम भागा ping google.com -c 4
और फिर भागगया ping !^
, बैश इस के लिए विस्तार होगा "ping google.com"
.
सिर्फ एक तर्क के बजाय पिछले कमांड में इस्तेमाल किए गए सभी तर्कों को भरने के लिए, आप निम्नलिखित का उपयोग करेंगे:
command !*
तो, अगर तुम भागा ping !*
इसके बजाय, बैश स्वचालित रूप से उन सभी तर्कों को भर देगा जो आपने पिछले कमांड में उपयोग किए थे।
आप उसी ट्रिक का उपयोग कर सकते हैं जिसका उपयोग आप अपने इतिहास से कमांड चलाने के लिए उनसे बहस करने के लिए करते हैं। बस निम्नलिखित फॉर्म का उपयोग करें।
command !abc:#
उदाहरण के लिए, हमने कमांड चलाया sudo hostname ubuntu
पहले। यदि हम निम्नलिखित कमांड चलाते हैं, तो bash इतिहास के माध्यम से पीछे की ओर खोजेगा, अंतिम अक्षर जिसे हम टाइप करते हैं, उसके साथ आरंभ करने के लिए और हमारे द्वारा निर्दिष्ट तर्क में भरें। इसलिए, अगर हम दौड़ते हैं echo !su:2
, bash अंतिम कमांड को खोजने के लिए वापस खोजेगा "su
"और इसके दूसरे तर्क को भरें, जो है"ubuntu
"।
अन्य चालें आपकी अपेक्षा के अनुरूप काम करती हैं। उदाहरण के लिए, वाइल्डकार्ड के रूप में जाना जाने वाले तारांकन के साथ संख्या की जगह, कमांड से सभी तर्कों को भरने के लिए बैश का कारण बनता है:
command !abc:*
पिछले कमांड को रीरुन करें और इसे संशोधित करें
बैश आपको पिछले को फिर से चलाने की अनुमति देता हैकमांड और कुछ निर्दिष्ट करें जिसे बदलना चाहिए। यह एक कमांड में टाइपो को सही करने के लिए उपयोगी हो सकता है। उदाहरण के लिए, निम्न कमांड पाठ की जगह पिछले कमांड को फिर से करेगा।abc
"पाठ के साथ इसमें"xyz
"।
^abc^xyz
उदाहरण के लिए, यदि आप गलती से भाग गए हैं ping gogle.com
, तो आप चला सकते हैं ^gog^goog
और बैश कमांड चलाएगा ping google.com
बजाय।
जहाँ आपका इतिहास संग्रहीत है, और इसे कैसे साफ़ करें
बैश शेल आदेशों के इतिहास को संग्रहीत करता हैआप डिफ़ॉल्ट रूप से ~ / .bash_history पर अपने उपयोगकर्ता खाते की इतिहास फ़ाइल में चलते हैं। उदाहरण के लिए, यदि आपका उपयोगकर्ता नाम बॉब है, तो आपको यह फ़ाइल /home/bob/.bash_history पर मिलेगी।
क्योंकि आपका इतिहास एक फ़ाइल में संग्रहीत हैसत्रों के बीच बनी रहती है। आप कुछ कमांड चला सकते हैं, साइन आउट कर सकते हैं, अगले दिन वापस आ सकते हैं और वे कमांड अभी भी आपकी इतिहास फ़ाइल में देखने और उपयोग करने के लिए तैयार हैं। प्रत्येक उपयोगकर्ता खाते की अपनी इतिहास फ़ाइल एक अलग कमांड इतिहास के साथ होती है।
अपना बैश इतिहास साफ़ करने के लिए, आप निम्न कमांड चला सकते हैं। यह आपके उपयोगकर्ता खाते की .bash_history फ़ाइल की सामग्री को मिटा देता है:
history -c
बैश केवल सीमित संख्या में डिफ़ॉल्ट रूप से याद करता है, इतिहास फ़ाइल को बहुत बड़े होने से रोकता है। इतिहास प्रविष्टियों की संख्या बैश याद द्वारा नियंत्रित की जाती है HISTSIZE
चर। डिफ़ॉल्ट आमतौर पर 500 या 1000 प्रविष्टियाँ होती हैं। आप अपने सिस्टम पर बैश इतिहास का आकार देखने के लिए निम्न कमांड चला सकते हैं।
echo $HISTSIZE
अपने इतिहास को शून्य पर सेट करने के लिए, निम्न कमांड चलाएँ।
HISTSIZE=0
वर्तमान सत्र के लिए, जब तक आपका आदेश नहीं चलता तब तक बैश किसी भी इतिहास प्रविष्टियों को संग्रहीत नहीं करेंगे HISTSIZE=1000
प्रविष्टियों की एक निश्चित संख्या में इसे वापस सेट करने के लिए।
स्पेस और डुप्लिकेट को कैसे अनदेखा करें
बैश आपको इतिहास प्रविष्टियों को अनदेखा करने की अनुमति देता है जो यदि आप सेट करते हैं तो एक स्थान से शुरू होता है HISTCONTROL
परिवर्तनशील ignorespace.
HISTCONTROL=ignorespace
इसे चलाने से पहले एक कमांड से पहले एक स्पेस टाइप करेंबैश शेल में और कमांड सामान्य रूप से चलेगा, लेकिन यदि आपके पास यह चर सक्षम है तो आपके इतिहास में दिखाई नहीं देगा। यह आपको अपने इतिहास को थोड़ा साफ रखने की अनुमति देता है, ताकि वे आपके इतिहास में दिखाई देने के बिना आदेशों को चला सकें।
बैश आपको डुप्लिकेट आदेशों को अनदेखा करने की भी अनुमति देता है जो आपके इतिहास को अव्यवस्थित कर सकते हैं। ऐसा करने के लिए, सेट करें HISTCONTROL
सेवा ignoredups.
HISTCONTROL=ignoredups
दोनों का उपयोग करने के लिए ignorespace
तथा ignoredups
सुविधा, सेट HISTCONTROL
परिवर्तनशील ignoreboth.
HISTCONTROL=ignoreboth
ध्यान दें कि आपके द्वारा सेट किए गए वैरिएबल केवल बैश होंगेवर्तमान सत्र के लिए बने रहें। यदि आप चाहें तो शुरू होने वाले प्रत्येक बैश सत्र में इन मूल्यों को स्वचालित रूप से सेट करने के लिए आपको अपने उपयोगकर्ता खाते की .bashrc फ़ाइल में इन्हें जोड़ना होगा।
बैश शेल कई और अधिक के साथ एक जटिल उपकरण हैइनकी तुलना में विकल्प। आधिकारिक बैश मैनुअल में बैश हिस्ट्री बिलिन और हिस्ट्री एक्सपेंशन सेक्शन की विस्तृत जानकारी और अन्य उन्नत ट्रिक्स जो आप उपयोग कर सकते हैं, से परामर्श करें।