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

स्रोत कमांड के साथ बैश में फ़ंक्शन और चर आयात करें

जब आप किसी Linux शेल में लॉग इन करते हैं, तो आप एक विशिष्ट कार्य परिवेश को इनहेरिट करते हैं। एक पर्यावरण , एक शेल के संदर्भ में, इसका अर्थ है कि आपके लिए कुछ निश्चित चर पहले से ही निर्धारित हैं, जो सुनिश्चित करता है कि आपके आदेश उद्देश्य के अनुसार काम करें। उदाहरण के लिए, PATH पर्यावरण चर परिभाषित करता है कि आपका शेल कमांड के लिए कहां दिखता है। इसके बिना, बैश में आप जो कुछ भी करने का प्रयास करते हैं वह आदेश नहीं मिला . के साथ विफल हो जाएगा गलती। आपका परिवेश, जबकि आप अपने दैनिक कार्यों के बारे में अधिकतर अदृश्य होते हैं, अत्यंत महत्वपूर्ण है।

आपके शेल वातावरण को प्रभावित करने के कई तरीके हैं। आप कॉन्फ़िगरेशन फ़ाइलों में संशोधन कर सकते हैं, जैसे ~/.bashrc और ~/.profile , आप स्टार्टअप पर सेवाएं चला सकते हैं, और आप अपने स्वयं के कस्टम कमांड बना सकते हैं या अपने स्वयं के बैश फ़ंक्शन को स्क्रिप्ट कर सकते हैं।

स्रोत के साथ अपने परिवेश में जोड़ें

बैश (कुछ अन्य गोले के साथ) में एक अंतर्निहित कमांड होता है जिसे source . कहा जाता है . और यहीं पर यह भ्रमित हो सकता है:source . (हाँ, यह केवल एक बिंदु है), और यह नहीं है वही source Tcl . के रूप में कमांड (यदि आप man source . टाइप करते हैं तो यह आपकी स्क्रीन पर आ सकता है ) अंतर्निहित source कमांड आपके PATH में नहीं है बिल्कुल, वास्तव में। यह एक कमांड है जो बैश के एक भाग के रूप में शामिल है, और इसके बारे में अधिक जानकारी प्राप्त करने के लिए, आप help source टाइप कर सकते हैं ।

. कमांड POSIX- अनुरूप है। source कमांड POSIX द्वारा परिभाषित नहीं है, लेकिन . आदेश।

बैश के अनुसार help , source कमांड आपके वर्तमान शेल में एक फाइल को निष्पादित करता है। "आपके वर्तमान शेल में" क्लॉज महत्वपूर्ण है, क्योंकि इसका मतलब है कि यह सब-शेल लॉन्च नहीं करता है; इसलिए, जो कुछ भी आप source . के साथ निष्पादित करते हैं भीतर होता है और आपके वर्तमान . को प्रभावित करता है पर्यावरण।

यह जानने से पहले कि कैसे source आपके परिवेश को प्रभावित कर सकता है, sourceको आजमाएं एक परीक्षण फ़ाइल पर यह सुनिश्चित करने के लिए कि यह अपेक्षित रूप से कोड निष्पादित करता है। सबसे पहले, एक साधारण बैश स्क्रिप्ट बनाएं और इसे hello.sh . नामक फ़ाइल के रूप में सहेजें :

#!/usr/bin/env bash
echo "hello world"

source का उपयोग करना , आप इस स्क्रिप्ट को निष्पादन योग्य बिट सेट किए बिना भी चला सकते हैं:

$ source hello.sh
hello world

आप बिल्ट-इन. . का भी उपयोग कर सकते हैं समान परिणामों के लिए कमांड:

$ . hello.sh
hello world

source और . आदेश परीक्षण फ़ाइल की सामग्री को सफलतापूर्वक निष्पादित करते हैं।

चर सेट करें और फ़ंक्शन आयात करें

आप source . का उपयोग कर सकते हैं फ़ाइल को अपने शेल वातावरण में "आयात" करने के लिए, जैसे आप include . का उपयोग कर सकते हैं लाइब्रेरी या import . को संदर्भित करने के लिए C या C++ में कीवर्ड एक मॉड्यूल लाने के लिए पायथन में कीवर्ड। यह source . के लिए सबसे आम उपयोगों में से एक है , और यह .bashrc . में एक सामान्य डिफ़ॉल्ट समावेशन है फ़ाइलों को source .bash_aliases . नामक फ़ाइल ताकि आपके द्वारा परिभाषित कोई भी कस्टम उपनाम आपके द्वारा लॉग इन करने पर आपके परिवेश में आयात हो जाए।

बैश फ़ंक्शन आयात करने का एक उदाहरण यहां दिया गया है। सबसे पहले, myfunctions . नामक फ़ाइल में एक फ़ंक्शन बनाएं . यह आपके सार्वजनिक आईपी पते और आपके स्थानीय आईपी पते को प्रिंट करता है:

function myip() {
        curl https://icanhazip.com      

        ip addr | grep inet$IP | \
        cut -d"/" -f 1 | \
        grep -v 127\.0 | \
        grep -v \:\:1 | \
        awk '{$1=$1};1'
}

फ़ंक्शन को अपने शेल में आयात करें:

$ source myfunctions

अपने नए फ़ंक्शन का परीक्षण करें:

$ myip
93.184.216.34
inet 192.168.0.23
inet6 fbd4:e85f:49c:2121:ce12:ef79:0e77:59d1
inet 10.8.42.38

स्रोत खोजें

जब आप source . का उपयोग करते हैं बैश में, यह आपके द्वारा संदर्भित फ़ाइल के लिए आपकी वर्तमान निर्देशिका खोजता है। यह सभी शेल में नहीं होता है, इसलिए यदि आप बैश का उपयोग नहीं कर रहे हैं तो अपने दस्तावेज़ देखें।

यदि बैश फ़ाइल को निष्पादित करने के लिए नहीं ढूंढ पाता है, तो यह आपके PATH . को खोजता है बजाय। फिर से, यह सभी शेल के लिए डिफ़ॉल्ट नहीं है, इसलिए यदि आप बैश का उपयोग नहीं कर रहे हैं तो अपने दस्तावेज़ देखें।

बैश में ये दोनों अच्छी सुविधा सुविधाएँ हैं। यह व्यवहार आश्चर्यजनक रूप से शक्तिशाली है क्योंकि यह आपको अपने ड्राइव पर एक केंद्रीकृत स्थान में सामान्य कार्यों को संग्रहीत करने की अनुमति देता है और फिर अपने पर्यावरण को एक एकीकृत विकास वातावरण (आईडीई) की तरह मानता है। आपको इस बारे में चिंता करने की ज़रूरत नहीं है कि आपके फ़ंक्शन कहाँ संग्रहीत हैं, क्योंकि आप जानते हैं कि वे आपके स्थानीय समकक्ष /usr/include में हैं , इसलिए कोई फर्क नहीं पड़ता कि आप कहां हैं जब आप उन्हें स्रोत करते हैं, बैश उन्हें ढूंढता है।

उदाहरण के लिए, आप ~/.local/include . नामक निर्देशिका बना सकते हैं सामान्य कार्यों के लिए एक भंडारण क्षेत्र के रूप में और फिर कोड के इस ब्लॉक को अपने .bashrc . में डाल दें फ़ाइल:

for i in $HOME/.local/include/*;
  do source $i
done

यह ~/.local/include . में कस्टम फ़ंक्शन वाली किसी भी फ़ाइल को "आयात" करता है आपके शेल वातावरण में।

बैश एकमात्र ऐसा शेल है जो वर्तमान निर्देशिका और आपके PATH . दोनों को खोजता है जब आप या तो source . का उपयोग करते हैं या . आदेश।

ओपन सोर्स के लिए स्रोत का उपयोग करना

source का उपयोग करना या . फ़ाइलों को निष्पादित करना आपके परिवर्तनों को मॉड्यूलर रखते हुए आपके पर्यावरण को प्रभावित करने का एक सुविधाजनक तरीका हो सकता है। अगली बार जब आप कोड के बड़े ब्लॉक को अपने .bashrc में कॉपी और पेस्ट करने के बारे में सोच रहे हों फ़ाइल, संबंधित कार्यों या उपनामों के समूहों को समर्पित फ़ाइलों में रखने पर विचार करें, और फिर source . का उपयोग करें उन्हें निगलना।


  1. टर्मिनल में स्मार्ट तरीके से काम करने के लिए बैश टिप्स और ट्रिक्स

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

  1. उदाहरण के साथ, लिनक्स में वॉच कमांड का उपयोग कैसे करें

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

  1. अंतिम बैश ऐरे ट्यूटोरियल 15 उदाहरणों के साथ

    एक सरणी एक चर है जिसमें कई मान एक ही प्रकार के या विभिन्न प्रकार के हो सकते हैं। किसी सरणी के आकार की कोई अधिकतम सीमा नहीं है, न ही कोई आवश्यकता है कि सदस्य चर को अनुक्रमित किया जाए या सन्निहित रूप से असाइन किया जाए। ऐरे इंडेक्स शून्य से शुरू होता है। इस लेख में, आइए हम बैश में 15 विभिन्न सरणी संचा