एंड्रॉयड

बैश हेरेडोक

एक हियरडॉक क्या है? यहाँ दस्तावेज में बताया | लिनक्स टर्मिनल 201 - HakTip 179

एक हियरडॉक क्या है? यहाँ दस्तावेज में बताया | लिनक्स टर्मिनल 201 - HakTip 179

विषयसूची:

Anonim

शेल स्क्रिप्ट लिखते समय आप एक ऐसी स्थिति में हो सकते हैं जहां आपको टेक्स्ट या कोड के एक बहुस्तरीय ब्लॉक को इंटरेक्टिव कमांड, जैसे tee , cat , या sftp

बाश और ज़श जैसे अन्य गोले में, यहां एक दस्तावेज़ (हेरेडोक) एक प्रकार का पुनर्निर्देशन है जो आपको कमांड के लिए इनपुट की कई पंक्तियों को पारित करने की अनुमति देता है।

HereDoc लिखने का सिंटैक्स निम्न रूप लेता है:

<< 'DELIMITER' HERE-DOCUMENT DELIMITER

  • पहली पंक्ति एक वैकल्पिक कमांड के साथ शुरू होती है जिसके बाद विशेष पुनर्निर्देशन ऑपरेटर << और परिसीमन पहचानकर्ता होता है।
    • आप किसी भी स्ट्रिंग को एक परिसीमन पहचानकर्ता के रूप में उपयोग कर सकते हैं, सबसे अधिक इस्तेमाल किया जाने वाला EOF या END हैं। यदि परिसीमन करने वाला पहचानकर्ता अयोग्य है, तो शेल यहां-डॉक्यूमेंट लाइनों को कमांड में भेजने से पहले सभी चर, कमांड और विशेष वर्णों को प्रतिस्थापित कर देगा। पुनर्निर्देशन ऑपरेटर के लिए ऋण चिह्न <<- , सभी प्रमुख टैब वर्णों को अनदेखा करने का कारण होगा। यह आपको शेल-स्क्रिप्ट में यहाँ-दस्तावेज़ लिखते समय इंडेंटेशन का उपयोग करने की अनुमति देता है। अग्रणी व्हाट्सएप वर्णों की अनुमति नहीं है, केवल टैब।
    यहाँ-डॉक्यूमेंट ब्लॉक में स्ट्रिंग्स, वेरिएबल्स, कमांड्स और किसी भी अन्य प्रकार के इनपुट शामिल हो सकते हैं। अंतिम पंक्ति का परिसीमन पहचानकर्ता के साथ होता है। सीमांकक के सामने सफेद स्थान की अनुमति नहीं है।

बेसिक हेरेडोक उदाहरण

इस खंड में, हम हेरेडोक का उपयोग करने के कुछ बुनियादी उदाहरणों पर गौर करेंगे।

हेरेडोक को अक्सर बिल्ली कमान के साथ संयोजन में उपयोग किया जाता है।

निम्नलिखित उदाहरण में, हम पर्यावरण चर और पाठ की दो पंक्तियों को पारित कर रहे हैं, यहां एक दस्तावेज़ का उपयोग करके cat को आदेश दिया गया है।

cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF

जैसा कि आप नीचे दिए गए आउटपुट से देख सकते हैं, दोनों चर और कमांड आउटपुट प्रतिस्थापित हैं:

The current working directory is: /home/linuxize You are logged in as: linuxize

आइए देखें कि यदि हम सीमांकक को एकल या दोहरे उद्धरणों में शामिल करते हैं तो क्या होगा।

cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF

आप देख सकते हैं कि जब सीमांकक को कोई पैरामीटर विस्तार नहीं दिया गया है और शेल द्वारा कमांड प्रतिस्थापन किया जाता है।

The current working directory is: $PWD You are logged in as: $(whoami)

if true; then cat <<- EOF Line with a leading tab. EOF fi

Line with a leading tab.

स्क्रीन पर आउटपुट प्रदर्शित करने के बजाय आप इसे > , >> ऑपरेटरों के उपयोग से फ़ाइल में रीडायरेक्ट कर सकते हैं।

cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF

अगर file.txt मौजूद नहीं है तो इसे बनाया जाएगा। उपयोग करते समय > फ़ाइल ओवरराइट हो जाएगी, जबकि >> आउटपुट को फाइल में जोड़ देगा।

हेरेडोक इनपुट को भी पाइप किया जा सकता है। निम्नलिखित उदाहरण में sed कमांड l वर्ण के सभी उदाहरणों को e साथ बदल देगा:

cat <<'EOF' | sed 's/l/e/g' Hello World EOF

Heeeo Wored

फ़ाइल में पाइप्ड डेटा लिखने के लिए:

cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF

SSH के साथ हेरेडोक का उपयोग करना

Heredoc का उपयोग SSH पर दूरस्थ सिस्टम पर कई कमांड को निष्पादित करने के सबसे सुविधाजनक और आसान तरीकों में से एक है।

निर्विवाद सीमांकक का उपयोग करते समय, सुनिश्चित करें कि आप सभी चर, आदेश और विशेष वर्ण से बच जाते हैं अन्यथा उन्हें स्थानीय रूप से प्रक्षेपित किया जाएगा:

ssh -T [email protected] << EOF echo "The current local working directory is: $PWD" echo "The current remote working directory is: \$PWD" EOF

The current local working directory is: /home/linuxize The current remote working directory is: /home/user

आप एक SSH कुंजी-आधारित प्रमाणीकरण सेट करना चाहते हैं और पासवर्ड दर्ज किए बिना अपने लिनक्स सर्वर से कनेक्ट कर सकते हैं।

निष्कर्ष

इस गाइड में, आपने सीखा है कि heredoc क्या है और इसे अपने शेल स्क्रिप्ट में कैसे उपयोग किया जाए।

बश टर्मिनल