जब आप लिनक्स कमांड लाइन का बार-बार उपयोग कर रहे हैं, तो इतिहास का प्रभावी ढंग से उपयोग करना एक प्रमुख उत्पादकता को बढ़ावा दे सकता है। वास्तव में, एक बार जब आप मेरे द्वारा यहां उपलब्ध कराए गए 15 उदाहरणों में महारत हासिल कर लेते हैं, तो आपको कमांड लाइन का उपयोग करना अधिक आनंददायक और मनोरंजक लगेगा। पी>
1. HISTTIMEFORMAT
का उपयोग करके टाइमस्टैम्प प्रदर्शित करें <पी> आमतौर पर जब आप कमांड लाइन से हिस्ट्री टाइप करते हैं, तो यह कमांड# और कमांड प्रदर्शित करता है। ऑडिटिंग उद्देश्य के लिए, नीचे दिखाए गए अनुसार कमांड के साथ टाइमपस्टैम्प प्रदर्शित करना फायदेमंद हो सकता है।# 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 दबाएँ और कीवर्ड टाइप करें . निम्नलिखित उदाहरण में, मैंने लाल खोजा , जिसने पिछला कमांड “cat /etc/redhat-release प्रदर्शित किया "इतिहास में जिसमें लाल शब्द शामिल था।# [Press Ctrl+R from the command prompt, which will display the reverse-i-search prompt] (reverse-i-search)`red': cat /etc/redhat-release [Note: Press enter when you see your command, which will execute the command from the history] # cat /etc/redhat-release Fedora release 9 (Sulphur)<पी> कभी-कभी आप किसी कमांड को निष्पादित करने से पहले उसे इतिहास से संपादित करना चाहते हैं। उदाहरण के लिए आप httpd खोज सकते हैं , जो service httpd stop प्रदर्शित करेगा कमांड इतिहास से, इस कमांड का चयन करें और स्टॉप को प्रारंभ में बदलें और नीचे दिखाए अनुसार इसे दोबारा निष्पादित करें।
# [Press Ctrl+R from the command prompt, which will display the reverse-i-search prompt] (reverse-i-search)`httpd': service httpd stop [Note: Press either left arrow or right arrow key when you see your command, which will display the command for you to edit, before executing it] # service httpd start
3. 4 अलग-अलग तरीकों का उपयोग करके पिछले कमांड को जल्दी से दोहराएं
<पी> कभी-कभी आप विभिन्न कारणों से पिछले आदेशों को दोहरा सकते हैं। अंतिम निष्पादित कमांड को दोहराने के 4 अलग-अलग तरीके निम्नलिखित हैं।- ऊपर तीर का उपयोग करें पिछले कमांड को देखने के लिए और इसे निष्पादित करने के लिए एंटर दबाएं।
- टाइप करें !! और कमांड लाइन से एंटर दबाएं
- टाइप करें !-1 और कमांड लाइन से एंटर दबाएं।
- 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 |' है ग्रेप 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_history फ़ाइल के बजाय .commandline_warrior फ़ाइल में संग्रहीत करने के लिए, .bash_profile में निम्न पंक्ति जोड़ें और बैश शेल में पुनः लॉगिन करें। मुझे अभी तक इसका कोई व्यावहारिक उपयोग समझ में नहीं आया है। जब आप अलग-अलग इतिहास फ़ाइल नाम का उपयोग करके विभिन्न टर्मिनलों से निष्पादित कमांड को ट्रैक करना चाहते हैं तो मैं इसका उपयोग होते हुए देख सकता हूँ।# vi ~/.bash_profile HISTFILE=/root/.commandline_warrior<पी> यदि आपके पास इतिहास फ़ाइल का नाम बदलने का कोई अच्छा कारण है, तो कृपया इसे मेरे साथ साझा करें, क्योंकि मुझे यह जानने में दिलचस्पी है कि आप इस सुविधा का उपयोग कैसे कर रहे हैं।
8. HISTCONTROL
का उपयोग करके इतिहास से लगातार दोहराई जाने वाली प्रविष्टि को हटा दें <पी> निम्नलिखित उदाहरण में pwd को तीन बार टाइप किया गया था, जब आप इतिहास बनाते हैं, तो आप इसकी सभी 3 निरंतर घटनाओं को देख सकते हैं। डुप्लिकेट को खत्म करने के लिए, HISTCONTROL को इग्नोरअप्स पर सेट करें जैसा कि नीचे दिखाया गया है।# pwd # pwd # pwd # history | tail -4 44 pwd 45 pwd 46 pwd [Note that there are three pwd commands in history, after executing pwd 3 times as shown above] 47 history | tail -4 # export HISTCONTROL=ignoredups # pwd # pwd # pwd # history | tail -3 56 export HISTCONTROL=ignoredups 57 pwd [Note that there is only one pwd command in the history, even after executing pwd 3 times as shown above] 58 history | tail -4
9. HISTCONTROL
का उपयोग करके पूरे इतिहास में डुप्लिकेट मिटाएं <पी> ऊपर दिखाए गए इग्नोरअप डुप्लिकेट को केवल तभी हटाते हैं जब वे लगातार कमांड हों। पूरे इतिहास में डुप्लिकेट को खत्म करने के लिए, नीचे दिखाए अनुसार HISTCONTROL को मिटाए गए पर सेट करें।# 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 [Note that the previous service httpd stop after pwd got erased] 40 history | tail -6
10. HISTCONTROL
का उपयोग करके इतिहास को किसी विशेष कमांड को याद न रखने के लिए बाध्य करें <पी> जब आप किसी कमांड को निष्पादित करते हैं, तो आप HISTCONTROL को इग्नोरस्पेस पर सेट करके और कमांड के सामने एक स्पेस टाइप करके इतिहास को कमांड को अनदेखा करने का निर्देश दे सकते हैं जैसा कि नीचे दिखाया गया है। मैं देख सकता हूं कि कई जूनियर सिस्टम एडमिन इस बारे में उत्साहित हो रहे हैं, क्योंकि वे इतिहास से एक कमांड छिपा सकते हैं। यह समझना अच्छा है कि इग्नोरस्पेस कैसे काम करता है। लेकिन, सर्वोत्तम अभ्यास के रूप में, इतिहास से जानबूझकर कुछ भी न छिपाएँ।# export HISTCONTROL=ignorespace # ls -ltr # pwd # service httpd stop [Note that there is a space at the beginning of service, to ignore this command from history] # 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 कमांड के आगे पिछले कमांड (यानी सीपी कमांड) से वर्तमान कमांड (यानी 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:$ इतिहास में पिछले कमांड की खोज करता है जो सीपी से शुरू होता है और सीपी का अंतिम तर्क (इस मामले में, जो ऊपर दिखाया गया दूसरा तर्क भी है) लेता है और इसे ls -l कमांड के लिए प्रतिस्थापित करता है जैसा कि नीचे दिखाया गया है।
# ls -l !cp:$ ls -l /really/a/very/long/path/long-filename.txt
14. HISTSIZE
का उपयोग करके इतिहास का उपयोग अक्षम करें <पी> यदि आप इतिहास को एक साथ अक्षम करना चाहते हैं और नहीं चाहते कि बैश शेल आपके द्वारा टाइप किए गए आदेशों को याद रखे, तो HISTSIZE को 0 पर सेट करें जैसा कि नीचे दिखाया गया है।# export HISTSIZE=0 # history # [Note that history did not display anything]
15. HISTIGNORE
का उपयोग करके इतिहास से विशिष्ट आदेशों को अनदेखा करें <पी> कभी-कभी आप pwd और ls जैसे बुनियादी आदेशों के साथ अपने इतिहास को अव्यवस्थित नहीं करना चाहेंगे। उन सभी आदेशों को निर्दिष्ट करने के लिए HISTIGNORE का उपयोग करें जिन्हें आप इतिहास से अनदेखा करना चाहते हैं। कृपया ध्यान दें कि HISTIGNORE में ls जोड़ने से केवल 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 [Note that history did not record pwd, ls and ls -ltr]
अनुशंसित पढ़ना
<पी>
बैश 101 हैक्स, रमेश नटराजन द्वारा . मैं अपना अधिकांश समय Linux परिवेश पर बिताता हूँ। इसलिए, स्वाभाविक रूप से मैं बैश कमांड लाइन और शेल स्क्रिप्टिंग का बहुत बड़ा प्रशंसक हूं। 15 साल पहले, जब मैं *निक्स के विभिन्न स्वादों पर काम कर रहा था, तो मैं सी शेल और कॉर्न शेल पर बहुत सारे कोड लिखता था। बाद के वर्षों में, जब मैंने सिस्टम प्रशासक के रूप में लिनक्स पर काम करना शुरू किया, तो मैंने बैश शेल स्क्रिप्टिंग का उपयोग करके हर संभव कार्य को काफी हद तक स्वचालित कर दिया। अपने बैश अनुभव के आधार पर, मैंने बैश 101 हैक्स ईबुक लिखी है जिसमें बैश कमांड लाइन और शेल स्क्रिप्टिंग दोनों पर 101 व्यावहारिक उदाहरण हैं। यदि आप बैश में महारत हासिल करने के बारे में सोच रहे हैं, तो अपने आप पर एक एहसान करें और इस पुस्तक को पढ़ें, जो आपको अपनी बैश कमांड लाइन और शेल स्क्रिप्टिंग पर नियंत्रण रखने में मदद करेगी। बहुत बढ़िया लिनक्स लेख
<पी> निम्नलिखित कुछ अद्भुत 15 उदाहरण हैं लेख जो आपको उपयोगी लग सकते हैं।- यूनिक्स एलएस कमांड:15 व्यावहारिक उदाहरण
- ग्रेप पर पकड़ बनाएं! – 15 प्रैक्टिकल ग्रेप कमांड उदाहरण
- लिनक्स क्रोंटैब:15 अद्भुत क्रॉन जॉब उदाहरण
- माँ, मुझे यह मिल गया! — 15 व्यावहारिक लिनक्स कमांड उदाहरण खोजें