Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

15 Linux बैश इतिहास विस्तार उदाहरण जो आपको जानना चाहिए

15 Linux बैश इतिहास विस्तार उदाहरण जो आपको जानना चाहिएबैश इतिहास बहुत शक्तिशाली है। बैश इतिहास विस्तार का प्रभावी ढंग से उपयोग करने के तरीके को समझना आपको Linux कमांड लाइन पर अत्यधिक उत्पादक बना देगा।

यह लेख 15 उदाहरणों की व्याख्या करता है जो निम्नलिखित बैश इतिहास विस्तार सुविधाओं का उपयोग करते हैं:

  • इवेंट डिज़ाइनर - इतिहास में किसी विशेष कमांड को संदर्भित करता है। यह एक से शुरू होता है!
  • वर्ड डिज़ाइनर - इतिहास प्रविष्टि के किसी विशेष शब्द को संदर्भित करता है। आम तौर पर यह एक समान डिज़ाइनर के साथ संयुक्त हो जाता है। यहां तक ​​कि डिज़ाइनर और शब्द डिज़ाइनर भी एक कोलन द्वारा अलग किए जाते हैं
  • संशोधक - घटना या शब्द डिज़ाइनर द्वारा किए गए प्रतिस्थापन के परिणाम को संशोधित करता है

यह लेख हमारी चल रही बैश ट्यूटोरियल श्रृंखला का हिस्सा है।

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

$ history
1 tar cvf etc.tar /etc/
2 cp /etc/passwd /backup
3 ps -ef | grep http
4 service sshd restart
5 /usr/local/apache2/bin/apachectl restart

बैश हिस्ट्री इवेंट डिज़ाइनर

<एच3>1. !n . का उपयोग करके इतिहास से एक विशिष्ट कमांड निष्पादित करें

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

उदाहरण के लिए, कमांड #4 निष्पादित करने के लिए, निम्न कार्य करें। यह इतिहास से कमांड #4 प्रदर्शित करेगा, और इसे तुरंत निष्पादित करेगा।

<केंद्र>
$ !4
service sshd restart

एक कमांड को निष्पादित करने के लिए जिसे 2 कमांड वापस टाइप किया गया था, निम्न कार्य करें।

$ !-2

पिछले कमांड को निष्पादित करने के लिए, निम्न में से कोई एक कार्य करें:

$ !!

$ !-1

पिछली कमांड पर जाने के लिए आप -P (यदि आप डिफ़ॉल्ट emacs मोड में हैं) भी दबा सकते हैं।

यदि आपने 'set -o vi' का उपयोग करके कमांड लाइन के लिए vi शैली संपादन सक्षम किया है, तो पिछली कमांड पर जाने के लिए -k का उपयोग करें।

<एच3>2. !string और !?string . का उपयोग करके कीवर्ड के साथ एक कमांड निष्पादित करें

इतिहास से कमांड निष्पादित करने के लिए आप कीवर्ड का भी उपयोग कर सकते हैं।

निम्न उदाहरण पिछले आदेश की खोज करेगा कि कीवर्ड के साथ प्रारंभ करें "पीएस" और इसे निष्पादित करें। इस उदाहरण में, यह पिछले कमांड को उठाता है "ps -ef | grep http" और इसे निष्पादित करता है।

$ !ps
ps -ef | grep http

निम्न उदाहरण पिछले आदेश की खोज करेगा जिसमें कीवर्ड शामिल है "अपाचे" और इसे निष्पादित करें। इस उदाहरण में, यह पिछले कमांड "/usr/local/apache2/bin/apachectl पुनरारंभ" को उठाता है और इसे निष्पादित करता है।

$ !?apache
/usr/local/apache2/bin/apachectl restart
<एच3>3. ^str1^str2^ . का उपयोग करके स्ट्रिंग को पिछले कमांड से बदलें

निम्नलिखित उदाहरण में, पहले हमने फ़ाइल को सत्यापित करने के लिए ls कमांड निष्पादित किया। बाद में हमें एहसास हुआ कि हम फ़ाइल की सामग्री देखना चाहते हैं। पूरे फ़ाइल नाम को फिर से टाइप करने के बजाय, हम पिछले कमांड में "ls" को "कैट" से बदल सकते हैं जैसा कि नीचे दिखाया गया है।

$ ls /etc/cron.daily/logrotate

$ ^ls^cat^
cat /etc/cron.daily/logrotate

नोट:अतिरिक्त बैश इतिहास युक्तियों के लिए, मास्टर लिनक्स कमांड लाइन इतिहास के लिए 15 उदाहरण देखें। यह बताता है कि इतिहास में टाइमस्टैम्प कैसे प्रदर्शित करें, और इतिहास से संबंधित विभिन्न पर्यावरण चर का उपयोग कैसे करें, जिसमें HISTTIMEFORMAT, HISTSIZE, HISTFILE, HISTCONTROL और HISTIGNORE शामिल हैं

बैश हिस्ट्री वर्ड डिज़ाइनर

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

<एच3>4. :^ . का उपयोग करके कमांड का पहला तर्क प्राप्त करें

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

$ cp /etc/passwd /backup

$ ls -l !cp:^
ls -l /etc/passwd

निम्न उदाहरण को पिछले आदेश से पहला तर्क मिलता है।

$ ls -l !!:^

5. :$

. का उपयोग करके कमांड का अंतिम तर्क प्राप्त करें

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

$ cp /etc/passwd /backup

$ ls -l !cp:$
ls -l /backup

निम्न उदाहरण पिछले आदेश से अंतिम तर्क प्राप्त करता है।

$ls -l !!:$
<एच3>6. :n . का उपयोग करके कमांड का nवां तर्क प्राप्त करें

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

$ tar cvfz /backup/home-dir-backup.tar.gz /home

$ ls -l !tar:2
ls -l /backup/home-dir-backup.tar.gz
<एच3>7. :* . का उपयोग करके कमांड से सभी तर्क प्राप्त करें

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

$ cp /etc/passwd /backup

$ ls -l !cp:*
ls -l /etc/passwd /backup

8. !%

. का उपयोग करके हाल ही में खोजे गए शब्द का संदर्भ लें

जैसा कि हमने ऊपर बताया, "!?अपाचे" पिछले इतिहास कमांड की खोज करेगा जिसमें "अपाचे" कीवर्ड शामिल है और इसे निष्पादित करें।

$ /usr/local/apache2/bin/apachectl restart

$ !?apache
/usr/local/apache2/bin/apachectl restart

!% उस पूरे शब्द को संदर्भित करेगा जो पिछले "?" से मेल खाता था खोज.

उदाहरण के लिए, यदि आपने पहले "?apache" खोजा है, तो "!%" पूरे शब्द "/usr/local/apache2/bin/apachectl" से मेल खाएगा। ध्यान दें कि इस संदर्भ में "/" को एक शब्द के हिस्से के रूप में माना जाता है।

तो, इस मामले में, निम्नलिखित को क्रियान्वित करके, आप अपाचे को रोक सकते हैं।

$ !% stop
/usr/local/apache2/bin/apachectl stop

9. x-y का उपयोग करके कमांड से तर्कों की श्रेणी प्राप्त करें

निम्नलिखित उदाहरण में, "!tar:3-5" को "ls -l" कमांड के तर्क के रूप में दिया गया था। "!tar:3-5" इतिहास में पिछले कमांड का पता लगाता है जो "tar" से शुरू होता है और 3 से 5 तक तर्क प्राप्त करता है।

$ tar cvf home-dir.tar john jason ramesh rita

$ ls -l !tar:3-5
ls -l john jason ramesh

निम्नलिखित सभी तर्क 2 से प्राप्त करता है।

$ ls -l !tar:2-$

कृपया निम्नलिखित पर ध्यान दें:

  • !!:* पिछले कमांड से सभी तर्क प्राप्त करता है
  • !!:2* दूसरे तर्क से शुरू होने वाले सभी तर्क प्राप्त करता है।
  • !!:2-$ ऊपर जैसा ही है। दूसरे तर्क से शुरू होने वाले सभी तर्क प्राप्त करें।
  • !!:2- दूसरे तर्क से शुरू होने वाले सभी तर्क प्राप्त करता है (अंतिम तर्क को छोड़कर)।

बैश इतिहास संशोधक

संशोधक शब्द डिज़ाइनर के बाद दिए गए हैं, जैसा कि नीचे दिए गए उदाहरणों में बताया गया है।

<एच3>10. :h . का उपयोग करके किसी शब्द से पिछला पथ नाम निकालें

निम्नलिखित उदाहरण में, "!!:$:h" पिछले कमांड का अंतिम तर्क लेता है, और पिछला पथ नाम हटा देता है। इस मामले में, यह फ़ाइल नाम को हटा देता है, और केवल पूर्ण पथ प्राप्त करता है।

$ ls -l /very/long/path/name/file-name.txt

$ ls -l !!:$:h
ls -l /very/long/path/name

11. :t

. का उपयोग करके किसी शब्द से सभी प्रमुख पथ नाम हटाएं

यह पिछले उदाहरण के ठीक विपरीत है।

निम्नलिखित उदाहरण में, "!!:$:t" पिछले कमांड का अंतिम तर्क लेता है, और सभी प्रमुख पथ नामों को हटा देता है। इस मामले में, इसे केवल फ़ाइल नाम मिलता है।

$ ls -l /very/long/path/name/file-name.txt

$ ls -l !!:$:t
ls -l file-name.txt
<एच3>12. :r . का उपयोग करके किसी शब्द से फ़ाइल नाम एक्सटेंशन को हटा दें

निम्नलिखित उदाहरण में, "!!:$:r" पिछले कमांड का अंतिम तर्क लेता है, और केवल ".suffix" (जो यहां फ़ाइल नाम एक्सटेंशन है) को हटा देता है। इस मामले में, उसने .txt को हटा दिया

$ ls -l /very/long/path/name/file-name.txt

$ ls -l !!:$:r
ls -l /very/long/path/name/file-name

13. बैश इतिहास में प्रतिस्थापन की तरह सेड :s/str1/str2/

. का उपयोग कर

जैसा कि हमने पहले चर्चा की थी, "^ मूल ^ प्रतिस्थापन ^" का उपयोग करने के बजाय, हम बैश इतिहास में एक सेड जैसे प्रतिस्थापन का भी उपयोग कर सकते हैं जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है। यह याद रखना आसान हो सकता है। !! पिछले कमांड को कॉल करना है, ":s/origin-string/replacement-string/" एक स्ट्रिंग को बदलने के लिए sed जैसा सिंटैक्स है।

$ !!:s/ls -l/cat/

जैसा कि नीचे दिखाया गया है, आप वैश्विक प्रतिस्थापन करने के लिए g ध्वज (s ध्वज के साथ) का भी उपयोग कर सकते हैं। यह तब मददगार होता है जब आपने कई शब्द गलत टाइप कर दिए हों और आप उन सभी को एक साथ बदलना चाहते हैं और फिर से कमांड निष्पादित करना चाहते हैं।

निम्नलिखित उदाहरण में, गलती से मैंने दो बार "पासवर्ड" दिया है (पासवार्ड के बजाय)।

$ cp /etc/password /backup/password.bak

इसे ठीक करने के लिए, निम्न वैश्विक इतिहास को प्रतिस्थापन की तरह करें।

$ !!:gs/password/passwd/
cp /etc/passwd /backup/passwd.bak
<एच3>14. :& . का उपयोग करके प्रतिस्थापन को शीघ्रता से दोहराएं

यदि आप पहले से ही बैश इतिहास प्रतिस्थापन को सफलतापूर्वक निष्पादित कर चुके हैं, जैसा कि ऊपर दिखाया गया है, तो आप :&का उपयोग करके उसी प्रतिस्थापन को फिर से जल्दी से दोहरा सकते हैं।

मैंने गलती से दूसरे कमांड में "पासवार्ड" के बजाय फिर से "पासवर्ड" टाइप कर दिया है।

$ tar cvf password.tar /etc/password

अब, कमांड को दोबारा टाइप करने या "जीएस/पासवर्ड/पासवार्ड" करने के बजाय, मैं केवल ":&" का उपयोग कर सकता हूं, जो अंतिम प्रतिस्थापन का पुन:उपयोग करेगा। विश्व स्तर पर अंतिम प्रतिस्थापन का पुन:उपयोग करने के लिए ":g&" का उपयोग करें।

$ !!:g&
tar cvf passwd.tar /etc/passwd
<एच3>15. :p . का उपयोग करके इसे निष्पादित किए बिना कमांड को प्रिंट करें

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

निम्नलिखित उदाहरण में, "!tar:3-:p", वास्तव में कमांड निष्पादित नहीं करता है।

चूंकि हमने यहां ":p" दिया है, यह सिर्फ प्रतिस्थापन करता है और नई कमांड प्रदर्शित करता है। एक बार जब आप बैश इतिहास विस्तार को सत्यापित कर लेते हैं, और यदि आपको लगता है कि यह वह आदेश है जिसे आप चलाने का इरादा रखते हैं, तो ":p" को हटा दें और इसे फिर से निष्पादित करें।

$ tar cvf home-dir.tar john jason ramesh rita

$ tar cvfz new-file.tar !tar:3-:p
tar cvfz new-file.tar john jason ramesh

  1. लिनक्स कमांड - बेसिक बैश कमांड लाइन टिप्स जो आपको पता होनी चाहिए

    Linux के पास ढेरों कमांड हैं, लेकिन अधिकांश लोग उनमें से केवल एक अंश का ही उपयोग करते हैं। टर्मिनल में उपयोग करने के लिए कुछ सबसे अधिक उपयोग किए जाने वाले लिनक्स कमांड यहां दिए गए हैं। सबसे पहले, हम कुछ युक्तियों को शामिल करेंगे जिससे कमांड लाइन का उपयोग करना आसान हो जाएगा: स्वतः पूर्णता के लिए ट

  1. उपयोगी लिनक्स कमांड लाइन बैश शॉर्टकट आपको पता होना चाहिए

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

  1. शुरुआती लोगों के लिए 7 कमांड प्रॉम्प्ट ट्रिक्स जो आपको पता होनी चाहिए

    कुछ दशकों के समय में वापस रोल करें, जब कंप्यूटर का उपयोग कमांड प्रॉम्प्ट विंडो शेल पर कुछ प्रमुख संयोजनों को कोसने के बारे में था। हम में से अधिकांश उस नीरस काली और सफेद खिड़की से नफरत करते थे क्योंकि हमें सभी आदेशों को याद रखना पड़ता है, यहां तक ​​कि सिस्टम में मामूली बदलाव करने के लिए भी। कमांड प