जब आप बैश के साथ स्क्रिप्टिंग कर रहे होते हैं, तो कभी-कभी आपको किसी फ़ाइल से डेटा पढ़ने या डेटा लिखने की आवश्यकता होती है। कभी-कभी फ़ाइल में कॉन्फ़िगरेशन विकल्प हो सकते हैं, और दूसरी बार फ़ाइल वह डेटा होती है जिसे आपका उपयोगकर्ता आपके एप्लिकेशन के साथ बना रहा है। प्रत्येक भाषा इस कार्य को थोड़ा अलग तरीके से संभालती है, और यह आलेख दर्शाता है कि बैश और अन्य पॉज़िक्स शेल के साथ डेटा फ़ाइलों को कैसे संभालना है।
बैश इंस्टॉल करें
यदि आप लिनक्स पर हैं, तो संभवतः आपके पास पहले से ही बैश है। यदि नहीं, तो आप इसे अपने सॉफ़्टवेयर रिपॉजिटरी में पा सकते हैं।
MacOS पर, आप डिफ़ॉल्ट टर्मिनल का उपयोग कर सकते हैं, या तो बैश या Zsh, जो आपके द्वारा चलाए जा रहे macOS संस्करण पर निर्भर करता है।
विंडोज़ पर, बैश का अनुभव करने के कई तरीके हैं, जिसमें माइक्रोसॉफ्ट के आधिकारिक रूप से समर्थित विंडोज सबसिस्टम फॉर लिनक्स (डब्लूएसएल) शामिल हैं।
बैश इंस्टॉल करने के बाद, अपना पसंदीदा टेक्स्ट एडिटर खोलें और कोड के लिए तैयार हो जाएं।
बैश वाली फ़ाइल पढ़ना
शेल होने के अलावा, बैश एक स्क्रिप्टिंग भाषा है। बैश से डेटा पढ़ने के कई तरीके हैं:आप एक प्रकार की डेटा स्ट्रीम बना सकते हैं और आउटपुट को पार्स कर सकते हैं, या आप डेटा को मेमोरी में लोड कर सकते हैं। दोनों जानकारी अंतर्ग्रहण करने के मान्य तरीके हैं, लेकिन प्रत्येक के उपयोग के मामले काफी विशिष्ट हैं।
बैश में फ़ाइल स्रोत करें
जब आप बैश में किसी फ़ाइल को "स्रोत" करते हैं, तो आप बैश को फ़ाइल की सामग्री को इस उम्मीद के साथ पढ़ने का कारण बनते हैं कि इसमें वैध डेटा है जो बैश अपने स्थापित डेटा मॉडल में फिट हो सकता है। आप किसी भी पुरानी फ़ाइल से डेटा स्रोत नहीं करेंगे, लेकिन आप कॉन्फ़िगरेशन फ़ाइलों और कार्यों को पढ़ने के लिए इस पद्धति का उपयोग कर सकते हैं।
उदाहरण के लिए, example.sh
called नाम की एक फाइल बनाएं और इसमें इसे दर्ज करें:
#!/bin/sh
greet opensource.com
echo "The meaning of life is $var"
इसे विफल देखने के लिए कोड चलाएँ:
$ bash ./example.sh
./example.sh: line 3: greet: command not found
The meaning of life is
बैश के पास greet
नामक कमांड नहीं है , इसलिए वह उस पंक्ति को निष्पादित नहीं कर सका, और उसके पास var
. नामक चर का कोई रिकॉर्ड नहीं है , इसलिए जीवन का कोई ज्ञात अर्थ नहीं है। इस समस्या को ठीक करने के लिए include.sh
. नाम की एक फाइल बनाएं :
greet() {
echo "Hello ${1}"
}
var=42
अपने example.sh
. को संशोधित करें एक source
. शामिल करने के लिए स्क्रिप्ट आदेश:
#!/bin/sh
source include.sh
greet opensource.com
echo "The meaning of life is $var"
इसे काम करते देखने के लिए स्क्रिप्ट चलाएँ:
$ bash ./example.sh
Hello opensource.com
The meaning of life is 42
greet
कमांड को आपके शेल वातावरण में लाया जाता है क्योंकि इसे include.sh
. में परिभाषित किया गया है फ़ाइल, और यह तर्क को भी पहचानता है (opensource.com
इस उदाहरण में)। चर var
सेट और आयात भी किया जाता है।
बैश में फ़ाइल को पार्स करें
डेटा को "बैश" में प्राप्त करने का दूसरा तरीका इसे डेटा स्ट्रीम के रूप में पार्स करना है। इसे करने के कई तरीके हैं। आप grep
. का उपयोग कर सकते हैं या cat
या कोई भी आदेश जो डेटा लेता है और इसे stdout में पाइप करता है। वैकल्पिक रूप से, आप बैश में जो बनाया गया है उसका उपयोग कर सकते हैं:रीडायरेक्ट। अपने आप में पुनर्निर्देशन बहुत उपयोगी नहीं है, इसलिए इस उदाहरण में, मैं अंतर्निहित echo
का भी उपयोग करता हूं रीडायरेक्ट के परिणाम प्रिंट करने का आदेश:
#!/bin/sh
echo $( < include.sh )
इसे stream.sh
के रूप में सेव करें और परिणाम देखने के लिए इसे चलाएं:
$ bash ./stream.sh
greet() { echo "Hello ${1}" } var=42
$
include.sh
. में प्रत्येक पंक्ति के लिए फ़ाइल, बैश प्रिंट (या गूँज) आपके टर्मिनल पर लाइन। इसे पहले उपयुक्त पार्सर में पाइप करना बैश के साथ डेटा पढ़ने का एक आम तरीका है। उदाहरण के लिए, एक पल के लिए मान लें कि include.sh
एक कॉन्फ़िगरेशन फ़ाइल है जिसमें कुंजी और मान जोड़े एक समान (=
. द्वारा अलग किए गए हैं) ) संकेत। आप awk
. के साथ मान प्राप्त कर सकते हैं या यहां तक कि cut
:
#!/bin/sh
myVar=`grep var include.sh | cut -d'=' -f2`
echo $myVar
स्क्रिप्ट चलाने का प्रयास करें:
$ bash ./stream.sh
42
बैश वाली फ़ाइल में डेटा लिखना
चाहे आप अपने उपयोगकर्ता द्वारा अपने एप्लिकेशन के साथ बनाए गए डेटा को संग्रहीत कर रहे हों या उपयोगकर्ता ने किसी एप्लिकेशन में क्या किया (उदाहरण के लिए, गेम सेव या हाल ही में खेले गए गाने) के बारे में मेटाडेटा, बाद में उपयोग के लिए डेटा संग्रहीत करने के कई अच्छे कारण हैं। बैश में, आप सामान्य शेल पुनर्निर्देशन का उपयोग करके डेटा को फ़ाइलों में सहेज सकते हैं।
उदाहरण के लिए, आउटपुट वाली एक नई फ़ाइल बनाने के लिए, एकल रीडायरेक्ट टोकन का उपयोग करें:
#!/bin/sh
TZ=UTC
date > date.txt
स्क्रिप्ट को कुछ बार चलाएँ:
$ bash ./date.sh
$ cat date.txt
Tue Feb 23 22:25:06 UTC 2021
$ bash ./date.sh
$ cat date.txt
Tue Feb 23 22:25:12 UTC 2021
डेटा जोड़ने के लिए, डबल रीडायरेक्ट टोकन का उपयोग करें:
#!/bin/sh
TZ=UTC
date >> date.txt
स्क्रिप्ट को कुछ बार चलाएँ:
$ bash ./date.sh
$ bash ./date.sh
$ bash ./date.sh
$ cat date.txt
Tue Feb 23 22:25:12 UTC 2021
Tue Feb 23 22:25:17 UTC 2021
Tue Feb 23 22:25:19 UTC 2021
Tue Feb 23 22:25:22 UTC 2021
आसान प्रोग्रामिंग के लिए बैश
सीखने में आसान होने पर बैश उत्कृष्टता प्राप्त करता है, क्योंकि केवल कुछ बुनियादी अवधारणाओं के साथ, आप जटिल कार्यक्रम बना सकते हैं। संपूर्ण दस्तावेज़ीकरण के लिए, GNU.org पर उत्कृष्ट बैश दस्तावेज़ देखें।