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

Bash टिल्ड विस्तार में मास्टर करें: 5 व्यावहारिक उदाहरण

Bash शेल कुछ वेरिएबल्स प्रदान करता है जो '~' (टिल्ड नामक) से उपसर्गित होते हैं जिन्हें टिल्ड विस्तार कहा जाता है।

वे आपके शेल के भीतर अन्य वेरिएबल्स की सामग्री के पर्याय हैं।

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

टिल्ड विस्तार '~' प्लस वर्णों पर लागू होता है जिसमें +, - और N (जो पूर्णांक है) व्हाइटस्पेस या स्लैश तक शामिल हैं।

टिल्ड विस्तार कई विशिष्ट पथनामों तक विस्तार करने के लिए उपयोग किया जाता है:

  • होम निर्देशिकाएं
  • वर्तमान/पिछली कार्य निर्देशिका
  • निर्देशिका स्टैक से निर्देशिकाएं।

होम निर्देशिकाएं

टिल्ड विस्तार वर्तमान उपयोगकर्ता की होम निर्देशिका या दिए गए उपयोगकर्ता नाम की होम निर्देशिका का विस्तार करने का एक तरीका प्रदान करता है।

सिंटैक्स ~ $HOME वेरिएबल या वर्तमान उपयोगकर्ता की होम निर्देशिका तक विस्तार करता है ~USER दिए गए उपयोगकर्ता नाम की होम निर्देशिका तक विस्तार करता है

उदाहरण 1. वर्तमान उपयोगकर्ता की होम

टिल्ड(~) एक अलग शब्द के रूप में, $HOME तक विस्तारित होता है यदि यह परिभाषित है, यदि $HOME परिभाषित नहीं है, तो यह वर्तमान उपयोगकर्ता की होम निर्देशिका के साथ विस्तारित होता है।

अब HOME वेरिएबल का मान /home/oracle है इसलिए cd ~ ने वर्तमान निर्देशिका को $HOME के मान में बदल दिया।

## oracle उपयोगकर्ता में लॉगिन करना, जिसकी होम निर्देशिका /home/oracle है # su oracle [tmp]$ pwd /tmp [tmp]$ echo $HOME /home/oracle [tmp]$ cd ~ [~]$ pwd /home/oracle

HOME को /sbin में बदल दिया गया है, और cd ~ केवल $HOME का उपयोग करता है न कि उपयोगकर्ता की होम निर्देशिका का। $HOME के मान को अनसेट करने के बाद, cd ~ निर्देशिका को /etc/passwd में oracle उपयोगकर्ता के लिए सेट होम निर्देशिका के मान में बदल देता है। टिल्ड विस्तार के लिए, HOME वास्तविक होम निर्देशिका को ओवरराइड करता है।

[~]$ export HOME=/sbin [oracle]$ cd ~ [~]$ pwd /sbin [~]$ unset HOME [sbin]$ cd ~ [oracle]$ pwd /home/oracle

उदाहरण 2. दिए गए उपयोगकर्ता की होम निर्देशिका

निम्नलिखित स्क्रिप्ट वर्तमान तिथि के साथ नाम में एक लॉग फ़ाइल का बैकअप लेती है। यह प्रारंभ समय और अंत समय को oracle उपयोगकर्ता की होम निर्देशिका में backup.log नामक फ़ाइल में लॉग करता है।

#! /bin/bash echo "Initiating the backup at `date`" >> ~oracle/backup.log da=`date +%F` cp $da.log{,.bak} echo "END BACKUP at `date`" >> ~oracle/backup.log $ ls -l /home/oracle/ total 8 -rw-r--r-- 1 root root 99 Jun 4 14:23 backup.log

यदि दिया गया उपयोगकर्ता नाम मौजूद नहीं है तो यह किसी चीज़ तक विस्तारित नहीं होता। निम्नलिखित उदाहरण में, ora नामक कोई उपयोगकर्ता नहीं है। इसलिए, ~ora /home/ora तक विस्तारित नहीं होगा।

$ echo ~ora ~ora

bash में ब्रेस विस्तार कैसे करें, यह समझने के लिए हमारे पहले के लेख देखें। यानी bash में { } का उपयोग कैसे करें।

कार्य निर्देशिकाएं

टिल्ड + और - के साथ कार्य निर्देशिकाओं का प्रतिनिधित्व करने के लिए उपयोग किया जाता है।

  • ~+ PWD वेरिएबल के मान तक विस्तारित होता है जिसमें वर्तमान कार्य निर्देशिका होती है।
  • ~- OLDPWD वेरिएबल के मान तक विस्तारित होता है, जिसमें पिछली कार्य निर्देशिका होती है। यदि OLDPWD अनसेट है, तो ~- विस्तारित नहीं होता।

उदाहरण 3. पुरानी/वर्तमान कार्य निर्देशिकाओं का विस्तार

निम्नलिखित उदाहरण वर्तमान निर्देशिका और पिछली कार्य निर्देशिका में फ़ाइल की तुलना करेगा।

$ cat comp.sh #! /bin/bash set -x cd /var/opt/gg if [ -f gg.c ] then echo "File1 exists" fi cd /var/opt1/gg if [ -f gg.c ] then echo "File2 exists" cmp ~+/gg.c ~-/gg.c fi $ ./comp.sh + cd /var/opt/gg + '[' -f gg.c ']' + echo 'File1 exists' File1 exists + cd /var/opt1/gg + '[' -f gg.c ']' + echo 'File2 exists' File2 exists + cmp /var/opt1/gg/gg.c /var/opt/gg/gg.c cmp: EOF on /var/opt1/gg/gg.c $

उपरोक्त निष्पादन में:

  • ~+/gg.c /var/opt1/gg/gg.c तक विस्तारित होता है
  • ~-/gg.c /var/opt/gg/gg.c तक विस्तारित होता है

यह लेख चल रही Bash ट्यूटोरियल सीरीज़ का हिस्सा है।

स्टैक में निर्देशिकाओं के लिए विस्तार

प्रत्येक bash प्रक्रिया में एक स्टैक ऑब्जेक्ट होता है जिसका उपयोग उन निर्देशिकाओं का ट्रैक रखने के लिए किया जा सकता है जिन पर स्क्रिप्ट ने निर्देशिका सामग्री के डेटा को संसाधित करते समय दौरा किया था।

यह उन निर्देशिकाओं को संदर्भित करने या उन निर्देशिकाओं पर वापस बदलने में सक्षम होने के लिए एक बहुत ही सरल तंत्र है जिन पर पहले दौरा किया गया था। टिल्ड विस्तार निर्देशिका स्टैक में निर्देशिकाओं के विस्तार को भी प्रदान करता है।

  • ~+N निर्देशिका स्टैक में Nवीं निर्देशिका का विस्तार करता है (dirs द्वारा प्रिंट की गई सूची के बाएं से गिनती, जब बिना विकल्पों के आमंत्रित किया जाता है), शून्य से शुरू होता है।
  • ~-N निर्देशिका स्टैक में Nवीं निर्देशिका का विस्तार करता है (dirs द्वारा प्रिंट की गई सूची के दाएं से गिनती, जब बिना विकल्पों के आमंत्रित किया जाता है), शून्य से शुरू होता है।

निर्देशिका स्टैक में हेरफेर करने के लिए dirs, pushd और popd कमांड्स का उपयोग कैसे करें, यह समझने के लिए हमारे पहले के लेख देखें।

उदाहरण 4. ~+ का उपयोग करके बाएं से Nवीं निर्देशिका प्रदर्शित करता है

निम्नलिखित उदाहरण में, निर्देशिका स्टैक में 4 निर्देशिकाएं हैं। ~+2 आपको शून्य से शुरू होने वाले बाएं से दूसरी स्थिति में उपलब्ध निर्देशिका पथ देता है।

$ dirs -v 0 /sbin 1 /var/opt/midas 2 /var/opt/GG/bin 3 /root $ cd ~+2 $ pwd /var/opt/GG/bin

लेकिन स्टैक का शीर्ष (शून्य स्थिति) में हमेशा वर्तमान निर्देशिका होगी। इसलिए उपरोक्त निष्पादन के बाद, निर्देशिका स्टैक में निम्नलिखित दिखाया गया है।

$ dirs -v 0 /var/opt/GG/bin 1 /var/opt/midas 2 /var/opt/GG/bin 3 /root

उदाहरण 5. ~- का उपयोग करके दाएं से Nवीं निर्देशिका प्रदर्शित करता है

निम्नलिखित उपरोक्त उदाहरण के समान है। लेकिन, ~- के कारण निर्देशिकाओं को स्टैक के नीचे से माना जाएगा।

$ dirs -v 0 /var/opt/GG/bin 1 /var/opt/midas 2 /var/opt/GG/bin 3 /root $ cd ~-2 $ pwd /var/opt/midas $ dirs -v 0 /var/opt/midas 1 /var/opt/midas 2 /var/opt/GG/bin 3 /root
  1. rbash: रिस्ट्रिक्टेड Bash शेल में महारत - अवधारणाएं, उपयोग और व्यावहारिक उदाहरण rbash: रिस्ट्रिक्टेड Bash शेल में महारत - अवधारणाएं, उपयोग और व्यावहारिक उदाहरण

    लिनक्स शेल सबसे आकर्षक और शक्तिशाली GNU/लिनक्स संचालित टूल में से एक है। X सहित सभी एप्लिकेशन, शेल पर बने हैं और लिनक्स शेल इतना शक्तिशाली है कि इसका उपयोग करके पूरे लिनक्स सिस्टम को सटीक रूप से नियंत्रित किया जा सकता है। लिनक्स शेल का दूसरा पहलू यह है कि यह संभावित रूप से हानिकारक हो सकता है, जब आप

  1. Linux Watch कमांड में मास्टरी: सिंटैक्स, विकल्प और व्यावहारिक उदाहरण Linux Watch कमांड में मास्टरी: सिंटैक्स, विकल्प और व्यावहारिक उदाहरण

    Linux में watch कमांड एक काम करता है – एक कमांड को दोहराता है और परिणाम को बार-बार आउटपुट करता है, जिससे आप परिवर्तनों को देख सकते हैं। यहाँ इसका उपयोग कैसे करें। watch कमांड सिंटैक्स watch कमांड का सिंटैक्स इस प्रकार है: watch OPTIONS COMMAND ध्यान दें कि: OPTIONS नीचे दी गई तालिका से विकल्पों की

  1. Bash शेल फ़ंक्शन्स में मास्टर करें: 6 व्यावहारिक उदाहरण और टिप्स Bash शेल फ़ंक्शन्स में मास्टर करें: 6 व्यावहारिक उदाहरण और टिप्स

    Bash शेल फ़ंक्शन्स कई UNIX / Linux कमांड्स को बाद में निष्पादन के लिए एक ही नाम का उपयोग करके समूहबद्ध करने का एक तरीका है। Bash शेल फ़ंक्शन को नियमित Unix कमांड की तरह निष्पादित किया जा सकता है। शेल फ़ंक्शन्स को किसी नई प्रक्रिया को बनाए बिना वर्तमान शेल संदर्भ में निष्पादित किया जाता है। Bash alia