एक हियरडॉक क्या है? यहाँ दस्तावेज में बताया | लिनक्स टर्मिनल 201 - HakTip 179
विषयसूची:
शेल स्क्रिप्ट लिखते समय आप एक ऐसी स्थिति में हो सकते हैं जहां आपको टेक्स्ट या कोड के एक बहुस्तरीय ब्लॉक को इंटरेक्टिव कमांड, जैसे
tee
,
cat
, या
sftp
।
बाश और ज़श जैसे अन्य गोले में, यहां एक दस्तावेज़ (हेरेडोक) एक प्रकार का पुनर्निर्देशन है जो आपको कमांड के लिए इनपुट की कई पंक्तियों को पारित करने की अनुमति देता है।
HereDoc लिखने का सिंटैक्स निम्न रूप लेता है:
<< 'DELIMITER' HERE-DOCUMENT DELIMITER
- पहली पंक्ति एक वैकल्पिक कमांड के साथ शुरू होती है जिसके बाद विशेष पुनर्निर्देशन ऑपरेटर
<<
और परिसीमन पहचानकर्ता होता है।- आप किसी भी स्ट्रिंग को एक परिसीमन पहचानकर्ता के रूप में उपयोग कर सकते हैं, सबसे अधिक इस्तेमाल किया जाने वाला EOF या END हैं। यदि परिसीमन करने वाला पहचानकर्ता अयोग्य है, तो शेल यहां-डॉक्यूमेंट लाइनों को कमांड में भेजने से पहले सभी चर, कमांड और विशेष वर्णों को प्रतिस्थापित कर देगा। पुनर्निर्देशन ऑपरेटर के लिए ऋण चिह्न
<<-
, सभी प्रमुख टैब वर्णों को अनदेखा करने का कारण होगा। यह आपको शेल-स्क्रिप्ट में यहाँ-दस्तावेज़ लिखते समय इंडेंटेशन का उपयोग करने की अनुमति देता है। अग्रणी व्हाट्सएप वर्णों की अनुमति नहीं है, केवल टैब।
- आप किसी भी स्ट्रिंग को एक परिसीमन पहचानकर्ता के रूप में उपयोग कर सकते हैं, सबसे अधिक इस्तेमाल किया जाने वाला 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
क्या है और इसे अपने शेल स्क्रिप्ट में कैसे उपयोग किया जाए।
10 साल की बैश में माइक्रोसॉफ्ट रिसर्च एशिया होस्ट्स गेट्स

माइक्रोसॉफ्ट रिसर्च एशिया 1998 में एक दर्जन से ज्यादा लोगों से बढ़कर एक दशक बाद 350 से ज्यादा हो गई है।
विंडोज 10 पर उबंटू पर बैश कैसे चलाएं

लिनक्स के लिए विंडोज सबसिस्टम को सक्षम करने से आप विंडोज 10, बैश स्क्रिप्ट्स पर उबंटू पर बैश चलाने की अनुमति देंगे , लिनक्स कमांड लाइन टूल्स, लिनक्स-फर्स्ट टूल्स।
बैश सरण

Arrays सबसे अधिक उपयोग और मौलिक डेटा संरचनाओं में से एक है। इस लेख में, हम बैश सरणियों को कवर करेंगे, और अपनी बाश लिपियों में उनका उपयोग करने का तरीका बताएंगे।