Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

लिनक्स कमांड लाइन इतिहास में महारत हासिल करें: 15 शक्तिशाली टिप्स और उदाहरण

लिनक्स कमांड लाइन इतिहास में महारत हासिल करें: 15 शक्तिशाली टिप्स और उदाहरणजब आप लिनक्स कमांड लाइन का बार-बार उपयोग कर रहे होते हैं, तो इतिहास का प्रभावी ढंग से उपयोग करना एक प्रमुख उत्पादकता वृद्धि हो सकती है। वास्तव में, एक बार जब आप यहां प्रदान किए गए 15 उदाहरणों में महारत हासिल कर लेते हैं, तो आप कमांड लाइन का उपयोग करना अधिक आनंददायक और मजेदार पाएंगे।

1. HISTTIMEFORMAT का उपयोग करके टाइमस्टैम्प प्रदर्शित करें

आमतौर पर जब आप कमांड लाइन से history टाइप करते हैं, तो यह कमांड# और कमांड प्रदर्शित करता है। ऑडिटिंग उद्देश्य के लिए, कमांड के साथ टाइमस्टैम्प प्रदर्शित करना फायदेमंद हो सकता है जैसा कि नीचे दिखाया गया है।

# export HISTTIMEFORMAT='%F %T ' # history | more 1 2008-08-05 19:02:39 service network restart 2 2008-08-05 19:02:39 exit 3 2008-08-05 19:02:39 id 4 2008-08-05 19:02:39 cat /etc/redhat-release

2. Control+R का उपयोग करके इतिहास खोजें

मेरा दृढ़ विश्वास है, यह इतिहास की आपकी सबसे अधिक उपयोग की जाने वाली सुविधा हो सकती है। जब आप पहले से ही एक बहुत लंबी कमांड निष्पादित कर चुके हैं, तो आप केवल एक कीवर्ड का उपयोग करके इतिहास खोज सकते हैं और पूरी कमांड टाइप किए बिना उसी कमांड को फिर से निष्पादित कर सकते हैं। Control+R दबाएं और कीवर्ड टाइप करें। निम्न उदाहरण में, मैंने red खोजा, जिसने इतिहास में पिछली कमांड "cat /etc/redhat-release" को प्रदर्शित किया जिसमें red शब्द था।

# [कमांड प्रॉम्प्ट से Ctrl+R दबाएं, जो रिवर्स-आई-सर्च प्रॉम्प्ट प्रदर्शित करेगा] (reverse-i-search)`red': cat /etc/redhat-release [नोट: जब आप अपनी कमांड देखें तो एंटर दबाएं, जो इतिहास से कमांड को निष्पादित करेगा] # cat /etc/redhat-release Fedora release 9 (Sulphur)

कभी-कभी आप निष्पादित करने से पहले इतिहास से एक कमांड संपादित करना चाहते हैं। उदा. आप httpd खोज सकते हैं, जो कमांड इतिहास से service httpd stop प्रदर्शित करेगा, इस कमांड का चयन करें और stop को start में बदलें और फिर से निष्पादित करें जैसा कि नीचे दिखाया गया है।

# [कमांड प्रॉम्प्ट से Ctrl+R दबाएं, जो रिवर्स-आई-सर्च प्रॉम्प्ट प्रदर्शित करेगा] (reverse-i-search)`httpd': service httpd stop [नोट: जब आप अपनी कमांड देखें तो बाएं तीर या दाएं तीर कुंजी दबाएं, जो संपादन के लिए कमांड प्रदर्शित करेगा, इसे निष्पादित करने से पहले] # service httpd start

3. 4 विभिन्न विधियों का उपयोग करके पिछली कमांड को तुरंत दोहराएं

कभी-कभी आप विभिन्न कारणों से पिछली कमांड को दोहराना चाहते हैं। अंतिम निष्पादित कमांड को दोहराने के 4 अलग-अलग तरीके निम्नलिखित हैं।

  1. पिछली कमांड देखने के लिए ऊपर तीर का उपयोग करें और इसे निष्पादित करने के लिए एंटर दबाएं।
  2. कमांड लाइन से !! टाइप करें और एंटर दबाएं
  3. कमांड लाइन से !-1 टाइप करें और एंटर दबाएं।
  4. Control+P दबाएं जो पिछली कमांड प्रदर्शित करेगा, इसे निष्पादित करने के लिए एंटर दबाएं

4. इतिहास से एक विशिष्ट कमांड निष्पादित करें

निम्न उदाहरण में, यदि आप कमांड #4 दोहराना चाहते हैं, तो आप !4 कर सकते हैं जैसा कि नीचे दिखाया गया है।

# history | more 1 service network restart 2 exit 3 id 4 cat /etc/redhat-release # !4 cat /etc/redhat-release Fedora release 9 (Sulphur)

5. एक विशिष्ट शब्द से शुरू होने वाली पिछली कमांड निष्पादित करें

! टाइप करें उसके बाद उस कमांड के शुरुआती कुछ अक्षर जिन्हें आप फिर से निष्पादित करना चाहते हैं। निम्न उदाहरण में, !ps टाइप करके और एंटर दबाने से, ps से शुरू होने वाली पिछली कमांड निष्पादित हुई, जो 'ps aux | grep yp' है।

# !ps ps aux | grep yp root 16947 0.0 0.1 36516 1264 ? Sl 13:10 0:00 ypbind root 17503 0.0 0.0 4124 740 pts/0 S+ 19:19 0:00 grep yp

6. HISTSIZE का उपयोग करके इतिहास में कुल लाइनों की संख्या नियंत्रित करें

.bash_profile में निम्न दो पंक्तियाँ जोड़ें और परिवर्तन देखने के लिए फिर से बैश शेल में लॉगिन करें। इस उदाहरण में, केवल 450 कमांड बैश इतिहास में संग्रहीत की जाएंगी।

# vi ~/.bash_profile HISTSIZE=450 HISTFILESIZE=450

7. HISTFILE का उपयोग करके इतिहास फ़ाइल नाम बदलें

डिफ़ॉल्ट रूप से, इतिहास ~/.bash_history फ़ाइल में संग्रहीत होता है। .bash_profile में निम्न पंक्ति जोड़ें और इतिहास कमांड को .bash_history फ़ाइल के बजाय .commandline_warrior फ़ाइल में संग्रहीत करने के लिए फिर से बैश शेल में लॉगिन करें। मुझे अभी तक इसका व्यावहारिक उपयोग नहीं मिला है। मैं देख सकता हूं कि इसका उपयोग तब किया जा रहा है जब आप अलग-अलग इतिहास फ़ाइल नाम का उपयोग करके विभिन्न टर्मिनलों से निष्पादित कमांड को ट्रैक करना चाहते हैं।

# vi ~/.bash_profile HISTFILE=/root/.commandline_warrior

यदि आपके पास इतिहास फ़ाइल का नाम बदलने का कोई अच्छा कारण है, तो कृपया इसे मेरे साथ साझा करें, क्योंकि मुझे यह जानने में दिलचस्पी है कि आप इस सुविधा का उपयोग कैसे कर रहे हैं।

8. HISTCONTROL का उपयोग करके इतिहास से लगातार दोहराई गई प्रविष्टि हटाएं

निम्न उदाहरण में pwd तीन बार टाइप किया गया था, जब आप history करते हैं, तो आप इसके सभी 3 लगातार घटनाओं को देख सकते हैं। डुप्लिकेट को खत्म करने के लिए, HISTCONTROL को ignoredups पर सेट करें जैसा कि नीचे दिखाया गया है।

# pwd # pwd # pwd # history | tail -4 44 pwd 45 pwd 46 pwd [ध्यान दें कि ऊपर दिखाए अनुसार pwd 3 बार निष्पादित करने के बाद इतिहास में तीन pwd कमांड हैं] 47 history | tail -4 # export HISTCONTROL=ignoredups # pwd # pwd # pwd # history | tail -3 56 export HISTCONTROL=ignoredups 57 pwd [ध्यान दें कि ऊपर दिखाए अनुसार pwd 3 बार निष्पादित करने के बाद भी इतिहास में केवल एक pwd कमांड है] 58 history | tail -4

9. HISTCONTROL का उपयोग करके पूरे इतिहास में डुप्लिकेट मिटाएं

ऊपर दिखाया गया ignoredups केवल तभी डुप्लिकेट हटाता है जब वे लगातार कमांड हों। पूरे इतिहास में डुप्लिकेट खत्म करने के लिए, HISTCONTROL को erasedups पर सेट करें जैसा कि नीचे दिखाया गया है।

# export HISTCONTROL=erasedups # pwd # service httpd stop # history | tail -3 38 pwd 39 service httpd stop 40 history | tail -3 # ls -ltr # service httpd stop # history | tail -6 35 export HISTCONTROL=erasedups 36 pwd 37 history | tail -3 38 ls -ltr 39 service httpd stop [ध्यान दें कि pwd के बाद पिछला service httpd stop मिट गया] 40 history | tail -6

10. HISTCONTROL का उपयोग करके इतिहास को एक विशेष कमांड याद न रखने के लिए बाध्य करें

जब आप एक कमांड निष्पादित करते हैं, तो आप HISTCONTROL को ignorespace पर सेट करके और कमांड के सामने एक स्पेस टाइप करके इतिहास को कमांड को अनदेखा करने का निर्देश दे सकते हैं जैसा कि नीचे दिखाया गया है। मैं बहुत सारे जूनियर सिसएडमिन को इसके बारे में उत्साहित होते देख सकता हूं, क्योंकि वे इतिहास से एक कमांड छिपा सकते हैं। यह समझना अच्छा है कि ignorespace कैसे काम करता है। लेकिन, सर्वोत्तम अभ्यास के रूप में, उद्देश्यपूर्ण ढंग से इतिहास से कुछ भी न छिपाएं।

# export HISTCONTROL=ignorespace # ls -ltr # pwd #  service httpd stop [नोट कि service की शुरुआत में एक स्पेस है, इस कमांड को इतिहास से अनदेखा करने के लिए] # history | tail -3 67 ls -ltr 68 pwd 69 history | tail -3

11. विकल्प -c का उपयोग करके पिछले सभी इतिहास साफ़ करें

कभी-कभी आप पिछले सभी इतिहास को साफ़ करना चाहते हैं, लेकिन इतिहास को आगे बढ़ते रखना चाहते हैं।

# history -c

12. इतिहास कमांड से शब्दों को प्रतिस्थापित करें

जब आप इतिहास के माध्यम से खोज रहे होते हैं, तो आप एक अलग कमांड निष्पादित करना चाह सकते हैं लेकिन जिस कमांड को आपने अभी खोजा है उससे उसी पैरामीटर का उपयोग करें।

नीचे दिए गए उदाहरण में, vi कमांड के बगल में !!:$ पिछली कमांड से तर्क को वर्तमान कमांड में प्राप्त करता है।

# ls anaconda-ks.cfg anaconda-ks.cfg # vi !!:$ vi anaconda-ks.cfg

नीचे दिए गए उदाहरण में, vi कमांड के बगल में !^ पिछली कमांड (यानी cp कमांड) से पहला तर्क प्राप्त करता है और वर्तमान कमांड (यानी vi कमांड) में उपयोग करता है।

# cp anaconda-ks.cfg anaconda-ks.cfg.bak anaconda-ks.cfg # vi !^ vi anaconda-ks.cfg

13. एक विशिष्ट कमांड के लिए एक विशिष्ट तर्क प्रतिस्थापित करें।

नीचे दिए गए उदाहरण में, !cp:2 इतिहास में cp से शुरू होने वाली पिछली कमांड खोजता है और cp के दूसरे तर्क को लेता है और इसे ls -l कमांड के लिए प्रतिस्थापित करता है जैसा कि नीचे दिखाया गया है।

# cp ~/longname.txt /really/a/very/long/path/long-filename.txt # ls -l !cp:2 ls -l /really/a/very/long/path/long-filename.txt

नीचे दिए गए उदाहरण में, !cp:$ इतिहास में cp से शुरू होने वाली पिछली कमांड खोजता है और cp के अंतिम तर्क (इस मामले में, जो ऊपर दिखाए अनुसार दूसरा तर्क भी है) को लेता है और इसे ls -l कमांड के लिए प्रतिस्थापित करता है जैसा कि नीचे दिखाया गया है।

# ls -l !cp:$ ls -l /really/a/very/long/path/long-filename.txt

14. HISTSIZE का उपयोग करके इतिहास के उपयोग को अक्षम करें

यदि आप इतिहास को पूरी तरह से अक्षम करना चाहते हैं और नहीं चाहते कि बैश शेल आपके द्वारा टाइप की गई कमांड को याद रखे, तो HISTSIZE को 0 पर सेट करें जैसा कि नीचे दिखाया गया है।

# export HISTSIZE=0 # history # [नोट कि इतिहास ने कुछ भी प्रदर्शित नहीं किया]

15. HISTIGNORE का उपयोग करके इतिहास से विशिष्ट कमांड को अनदेखा करें

कभी-कभी आप अपने इतिहास को pwd और ls जैसी बुनियादी कमांड से अव्यवस्थित नहीं करना चाहते। HISTIGNORE का उपयोग करके उन सभी कमांड को निर्दिष्ट करें जिन्हें आप इतिहास से अनदेखा करना चाहते हैं। कृपया ध्यान दें कि ls को HISTIGNORE में जोड़ने से केवल ls अनदेखा होता है न कि ls -l। इसलिए, आपको सटीक कमांड प्रदान करनी होगी जिसे आप इतिहास से अनदेखा करना चाहते हैं।

# export HISTIGNORE="pwd:ls:ls -ltr:" # pwd # ls # ls -ltr # service httpd stop # history | tail -3 79 export HISTIGNORE="pwd:ls:ls -ltr:" 80 service httpd stop 81 history [नोट कि इतिहास ने pwd, ls और ls -ltr रिकॉर्ड नहीं किया]

अनुशंसित पठन

लिनक्स कमांड लाइन इतिहास में महारत हासिल करें: 15 शक्तिशाली टिप्स और उदाहरणBash 101 Hacks, रमेश नटराजन द्वारा. मैं अपना अधिकांश समय लिनक्स वातावरण में बिताता हूं। इसलिए, स्वाभाविक रूप से मैं बैश कमांड लाइन और शेल स्क्रिप्टिंग का बहुत बड़ा प्रशंसक हूं। 15 साल पहले, जब मैं *nix के विभिन्न स्वादों पर काम कर रहा था, मैं C शेल और कॉर्न शेल पर बहुत सारा कोड लिखता था। बाद के वर्षों में, जब मैंने सिस्टम एडमिनिस्ट्रेटर के रूप में लिनक्स पर काम करना शुरू किया, तो मैंने बैश शेल स्क्रिप्टिंग का उपयोग करके हर संभव कार्य को स्वचालित कर दिया। अपने बैश अनुभव के आधार पर, मैंने Bash 101 Hacks ईबुक लिखी है जिसमें बैश कमांड लाइन और शेल स्क्रिप्टिंग दोनों पर 101 व्यावहारिक उदाहरण हैं। यदि आप बैश में महारत हासिल करने के बारे में सोच रहे हैं, तो अपना उपकार करें और इस पुस्तक को पढ़ें, जो आपको अपने बैश कमांड लाइन और शेल स्क्रिप्टिंग पर नियंत्रण रखने में मदद करेगी।

बहुत बढ़िया लिनक्स लेख

निम्नलिखित कुछ बहुत बढ़िया 15 उदाहरण लेख हैं जो आपको उपयोगी लग सकते हैं।

  • यूनिक्स LS कमांड: 15 व्यावहारिक उदाहरण
  • ग्रेप पर पकड़ बनाएं! - 15 व्यावहारिक ग्रेप कमांड उदाहरण
  • लिनक्स क्रॉनटैब: 15 बहुत बढ़िया क्रॉन जॉब उदाहरण
  • मम्मी, मुझे मिल गया! - 15 व्यावहारिक लिनक्स फाइंड कमांड उदाहरण

  1. पायथन में Bokeh का उपयोग करके स्कैटर प्लॉट कैसे उत्पन्न करें? पायथन में Bokeh का उपयोग करके स्कैटर प्लॉट कैसे उत्पन्न करें?

    Bokeh एक पायथन पैकेज है जो डेटा विज़ुअलाइज़ेशन में मदद करता है। यह एक ओपन सोर्स प्रोजेक्ट है। Bokeh अपने प्लॉट को HTML और JavaScript का उपयोग करके रेंडर करता है। यह इंगित करता है कि यह वेब-आधारित डैशबोर्ड के साथ काम करते समय उपयोगी है। Bokeh डेटा स्रोत को JSON फ़ाइल में परिवर्तित करता है। इस फ़ाइल

  1. जावास्क्रिप्ट में try और catch स्टेटमेंट्स को उदाहरण सहित समझाएं जावास्क्रिप्ट में try और catch स्टेटमेंट्स को उदाहरण सहित समझाएं

    परिचय try स्टेटमेंट हमें कोड के एक ब्लॉक को निष्पादित करने और एरर्स के लिए टेस्ट करने की अनुमति देता है। उन एरर्स को catch स्टेटमेंट द्वारा पकड़ा और हैंडल किया जाता है। वैकल्पिक finally ब्लॉक हमेशा निष्पादित होता है। उदाहरण निम्न कोड जावास्क्रिप्ट में try और catch स्टेटमेंट के लिए है: <!DOCTYP

  1. Django में URL शॉर्टनर ऐप बनाना Django में URL शॉर्टनर ऐप बनाना

    इस लेख में, हम देखेंगे कि Django में URL शॉर्टनर ऐप कैसे बनाया जाए। यह एक साधारण ऐप है जो एक लंबे URL को छोटे में बदल देगा। हम इसे एक पायथन लाइब्रेरी का उपयोग करके प्राप्त करेंगे, किसी Django-विशिष्ट लाइब्रेरी का नहीं, इसलिए आप इस कोड का उपयोग किसी भी पायथन प्रोजेक्ट में कर सकते हैं। सबसे पहले, एक