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