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

Bash स्क्रिप्टिंग में मास्टर करें: 5 वास्तविक-विश्व उदाहरणों के साथ एक व्यावहारिक परिचय

हमारे चल रहे Unix Sed और Unix Awk सीरीज़ के समान, हम Bash स्क्रिप्टिंग पर कई लेख पोस्ट करेंगे, जो व्यावहारिक उदाहरणों के साथ सभी Bash स्क्रिप्टिंग तकनीकों को कवर करेंगे।

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

शेल को इंटरैक्टिव शेल कहा जाता है, जब यह उपयोगकर्ता से सीधे इनपुट पढ़ता है।

शेल को नॉन-इंटरैक्टिव शेल कहा जाता है, जब यह फ़ाइल से कमांड्स पढ़ता है और उन्हें निष्पादित करता है। इस मामले में, शेल स्क्रिप्ट फ़ाइल की प्रत्येक लाइन को ऊपर से नीचे तक पढ़ता है, और प्रत्येक कमांड को निष्पादित करता है जैसे कि इसे सीधे उपयोगकर्ता द्वारा टाइप किया गया हो।

बिल्ट-इन शेल वेरिएबल $- का मान प्रिंट करें, यह जानने के लिए कि शेल इंटरैक्टिव है या नॉन-इंटरैक्टिव।

# echo $- himBH

नोट: $- वेरिएबल में "i" होता है जब शेल इंटरैक्टिव होता है।

Unix में विभिन्न प्रकार के शेल्स हैं। बॉर्न शेल (sh), बॉर्न अगेन शेल (bash), C शेल (csh), Korn शेल (ksh), Tenex C शेल (tcsh)। जिस या whereis यूनिक्स कमांड्स का उपयोग करके पता करें कि एक विशिष्ट शेल कहां स्थित है जैसा कि नीचे दिखाया गया है।

# which bash /bin/bash # whereis bash bash: /bin/bash /usr/share/man/man1/bash.1.gz

शेल नाम टाइप करके शेल्स के बीच स्विच कर सकते हैं। उदाहरण के लिए, C शेल पर स्विच करने के लिए csh टाइप करें।

शेल स्क्रिप्ट लिखना और निष्पादन

उदाहरण 1. Hello World Bash स्क्रिप्ट

  1. अपने पसंदीदा एडिटर का उपयोग करके फ़ाइल में निम्नलिखित दो लाइनें टाइप करके एक स्क्रिप्ट बनाएं।
  2. $ cat helloworld.sh #!/bin/bash echo Hello World
  3. आप फ़ाइल के लिए कोई भी नाम चुन सकते हैं। फ़ाइल नाम किसी भी यूनिक्स बिल्ट-इन कमांड के समान नहीं होना चाहिए।
  4. स्क्रिप्ट हमेशा दो वर्ण '#!' से शुरू होती है जिसे शे-बैंग कहा जाता है। यह इंगित करने के लिए है कि फ़ाइल एक स्क्रिप्ट है, और फ़ाइल में पहली लाइन के शेष द्वारा निर्दिष्ट इंटरप्रेटर (/bin/bash) का उपयोग करके निष्पादित की जानी चाहिए।
  5. नीचे दिखाए अनुसार स्क्रिप्ट निष्पादित करें। यदि आपको शेल स्क्रिप्ट निष्पादित करने में कोई समस्या है, तो शेल स्क्रिप्ट निष्पादन ट्यूटोरियल देखें
  6. $ bash helloworld.sh Hello World
  7. जब आप कमांड "bash helloworld.sh" निष्पादित करते हैं, तो यह नॉन-इंटरैक्टिव शेल शुरू करता है और फ़ाइलनाम को इसके आर्ग्यूमेंट के रूप में पास करता है।
  8. पहली लाइन ऑपरेटिंग सिस्टम को बताती है कि स्क्रिप्ट को निष्पादित करने के लिए कौन सा शेल स्पॉन करना है।
  9. उपरोक्त उदाहरण में, bash इंटरप्रेटर जो स्क्रिप्ट की व्याख्या करता है और कमांड्स को ऊपर से नीचे एक-एक करके निष्पादित करता है।
  10. आप स्क्रिप्ट को अग्रणी "bash" के बिना भी निष्पादित कर सकते हैं:
    • स्क्रिप्ट पर अनुमति बदलें ताकि आप (उपयोगकर्ता) इसे निष्पादित कर सकें, कमांड "chmod u+x helloworld.sh" का उपयोग करके।
    • स्क्रिप्ट वाली निर्देशिका PATH पर्यावरण वेरिएबल में शामिल होनी चाहिए। यदि शामिल नहीं है, तो आप स्क्रिप्ट के पूर्ण पथ को निर्दिष्ट करके स्क्रिप्ट निष्पादित कर सकते हैं।
  11. echo एक कमांड है जो केवल हमारे द्वारा दिए गए आर्ग्यूमेंट को आउटपुट करता है। इसका उपयोग वेरिएबल के मान को प्रिंट करने के लिए भी किया जाता है।

Bash-स्टार्टअप फ़ाइलें

जैसा कि हमने पहले .bash_profile और संबंधित फ़ाइलों के लिए निष्पादन क्रम पर अपने लेख में चर्चा की थी, जब bash को इंटरैक्टिव शेल के रूप में आमंत्रित किया जाता है, तो यह पहले /etc/profile से कमांड्स पढ़ता है और निष्पादित करता है। यदि /etc/profile मौजूद नहीं है, तो यह दिए गए क्रम में ~/.bash_profile, ~/.bash_login और ~/.profile से कमांड्स पढ़ता है और निष्पादित करता है। जब शेल शुरू होता है तो --noprofile विकल्प का उपयोग इस व्यवहार को रोकने के लिए किया जा सकता है।

आमतौर पर आपका bash_profile ~/.bashrc निष्पादित करता है। यदि आप चाहें, तो आप एक स्वागत संदेश दिखा सकते हैं। यह केवल तब चलता है जब आप पहली बार लॉगिन करते हैं। आप जो भी वेरिएबल्स चाहते हैं उन्हें निर्यात कर सकते हैं, और आप aliases सेट कर सकते हैं जो शेल खोलने पर चल रहे और उपलब्ध होंगे। जब एक लॉगिन शेल बाहर निकलता है, तो Bash ~/.bash_logout फ़ाइल से कमांड्स पढ़ता है और निष्पादित करता है।

उदाहरण 2. लॉगिन करते समय स्वागत संदेश प्रिंट करें

अपनी bash_profile फ़ाइल में निम्नलिखित सामग्री टाइप करें। यदि फ़ाइल मौजूद नहीं है, तो नीचे दी गई सामग्री के साथ एक फ़ाइल बनाएं।

$ cat ~/.bash_profile hname=`hostname` echo "Welcome on $hname."

जब आप इंटरैक्टिव शेल में लॉगिन करते हैं, तो आप नीचे दिखाए अनुसार स्वागत संदेश देखेंगे।

login as: root root@dev-db's password: Welcome on dev-db

उदाहरण 3. सिस्टम संबंधी जानकारी प्रिंट करें

जब आप इंटरैक्टिव शेल में लॉगिन करते हैं, तो आप सर्वर में इंस्टॉल कर्नेल का नाम, bash संस्करण, अपटाइम और समय दिखा सकते हैं।

$cat ~/.bash_profile hname=`hostname` echo "Welcome on $hname." echo -e "Kernel Details: " `uname -smr` echo -e "`bash --version`" echo -ne "Uptime: "; uptime echo -ne "Server time : "; date

जब आप एक इंटरैक्टिव शेल लॉन्च करते हैं, तो यह नीचे दिखाए अनुसार संदेश प्रिंट करता है।

login as: root root@dev-db's password: Welcome on dev-db Kernel Information: Linux 2.6.18-128 x86_64 GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc. Uptime: 11:24:01 up 21 days, 13:15, 3 users, load average: 0.08, 0.18, 0.11 Server time : Tue Feb 22 11:24:01 CET 2010

उदाहरण 4. अंतिम लॉगिन विवरण प्रिंट करें

यदि एक ही मशीन पर एक ही लॉगिन के साथ कई उपयोगकर्ता उपयोग कर रहे हैं, तो विवरण जैसे कि मशीन जिससे अंतिम लॉगिन हुआ, और वह समय जब उन्होंने लॉगिन किया, सबसे उपयोगी विवरण होंगे। यह उदाहरण इंटरैक्टिव शेल शुरू होने के दौरान अंतिम लॉगिन विवरण प्रिंट करता है।

$ cat ~/.bash_profile hname=`hostname` echo "Welcome on $hname." 
echo -e "Kernel Details: " `uname -smr` echo -e "`bash --version`" echo -ne "Uptime: "; uptime echo -ne "Server time : "; date

lastlog | grep "root" | awk {'print "Last login from : "$3

print "Last Login Date & Time: ",$4,$5,$6,$7,$8,$9;}'
स्टार्टअप के दौरान, आपको नीचे दिखाए अनुसार संदेश मिलेगा।

login as: root root@dev-db's password: Welcome on dev-db 
Kernel Information: Linux 2.6.18-128 x86_64 GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc. Uptime: 11:24:01 up 21 days, 13:15, 3 users, load average: 0.08, 0.18, 0.11 Server time : Tue Feb 22 11:24:01 CET 2010

Last login from : sasikala-laptop

Last Login Date & Time: Tue Feb 22 11:24:01 +0100 2010

उदाहरण 5. स्टार्टअप के दौरान वेरिएबल्स निर्यात करें और aliases सेट करें

.bashrc और .bash_profile फ़ाइलों में आपके द्वारा उपयोग की जाने वाली सबसे आम कमांड्स export और alias कमांड हैं।

एक alias केवल एक टेक्स्ट को दूसरे के लिए प्रतिस्थापित करना है। जब आप एक alias चलाते हैं, तो यह बस आपके द्वारा टाइप किए गए को उससे बदल देता है जो alias के बराबर है। उदाहरण के लिए, यदि आप ls कमांड के लिए एक alias सेट करना चाहते हैं ताकि फ़ाइलों/फ़ोल्डर्स को रंगों के साथ सूचीबद्ध किया जाए, तो निम्नलिखित करें:

alias ls 'ls --color=tty'

यदि आप इस कमांड को स्टार्टअप फ़ाइलों में से एक में जोड़ते हैं, तो आप ls कमांड निष्पादित कर सकते हैं, जहां यह स्वचालित रूप से ls --color=tty कमांड से बदल जाएगा।

Export कमांड का उपयोग पर्यावरण वेरिएबल सेट करने के लिए किया जाता है। विभिन्न पर्यावरण वेरिएबल्स सिस्टम या अन्य एप्लिकेशन द्वारा उपयोग किए जाते हैं। वे केवल पैरामीटर्स सेट करने का एक तरीका हैं जिन्हें कोई भी एप्लिकेशन/स्क्रिप्ट पढ़ सकता है। यदि आप export कमांड के बिना एक वेरिएबल सेट करते हैं, तो वह वेरिएबल केवल उस विशेष प्रक्रिया के लिए मौजूद होता है।

नीचे दिए गए उदाहरण में, यह पर्यावरण वेरिएबल HISTSIZE निर्यात कर रहा है। # से शुरू होने वाली लाइन एक टिप्पणी लाइन है।

$ cat /etc/profile alias ls 'ls --color=tty' # कुछ पर्यावरण वेरिएबल सेट करें। export HISTSIZE=1000 PATH=$PATH:$HOME/bin:/usr/bin:/bin/usr:/sbin/etc export PATH export SVN_SH=${SVN_RSH-ssh}
  1. Bash ऑटोमेशन स्क्रिप्ट के साथ इमेज ऑप्टिमाइज़ेशन को सुव्यवस्थित करें Bash ऑटोमेशन स्क्रिप्ट के साथ इमेज ऑप्टिमाइज़ेशन को सुव्यवस्थित करें

    लेखक न केवल शब्दों के साथ काम करते हैं, वे अक्सर छवियों के साथ भी काम करते हैं। तकनीकी लेखन में तकनीक और प्रक्रियाओं को व्यक्त करने के लिए बहुत सारे स्क्रीनशॉट प्रस्तुत करना शामिल है। विभिन्न प्रकाशन प्लेटफ़ॉर्म्स की छवियों के लिए विभिन्न आवश्यकताएं हो सकती हैं, जैसे छवि प्रारूप या फ़ाइल आकार। एक IT

  1. Bash वेरिएबल्स में मास्टर करें: ग्लोबल और लोकल उपयोग के 6 व्यावहारिक उदाहरण Bash वेरिएबल्स में मास्टर करें: ग्लोबल और लोकल उपयोग के 6 व्यावहारिक उदाहरण

    यह लेख हमारी चल रही bash ट्यूटोरियल सीरीज़ का हिस्सा है। किसी भी अन्य प्रोग्रामिंग भाषा की तरह, Bash भी वेरिएबल्स प्रदान करता है। Bash वेरिएबल्स प्रोग्राम के जीवनकाल के दौरान आवश्यक जानकारी के लिए अस्थायी भंडारण प्रदान करते हैं। सिंटैक्स: VARNAME=VALUE नोट: वेरिएबल असाइनमेंट में = चिन्ह के आसपास कोई

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

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