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

बैश स्क्रिप्टिंग परिचय ट्यूटोरियल 5 व्यावहारिक उदाहरणों के साथ

बैश स्क्रिप्टिंग परिचय ट्यूटोरियल 5 व्यावहारिक उदाहरणों के साथहमारी चल रही यूनिक्स सेड और यूनिक्स Awk श्रृंखला के समान, हम बैश स्क्रिप्टिंग पर कई लेख पोस्ट करेंगे, जो सभी बैश स्क्रिप्टिंग तकनीकों को व्यावहारिक उदाहरणों के साथ कवर करेगा।

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

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

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

# echo $-
himBH

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

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

# which bash
/bin/bash

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

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

<केंद्र>

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

उदाहरण 1. हैलो वर्ल्ड बैश स्क्रिप्ट

  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. उपरोक्त उदाहरण में, बैश दुभाषिया जो स्क्रिप्ट की व्याख्या करता है और ऊपर से नीचे तक एक-एक करके कमांड निष्पादित करता है।
  10. आप स्क्रिप्ट को निष्पादित भी कर सकते हैं, बिना "बैश" के:
    • आप (उपयोगकर्ता) को "chmod u+x helloworld.sh" कमांड का उपयोग करके इसे निष्पादित करने की अनुमति देने के लिए स्क्रिप्ट पर अनुमति बदलें।
    • स्क्रिप्ट वाली निर्देशिका को PATH पर्यावरण चर में शामिल किया जाना चाहिए। यदि शामिल नहीं है, तो आप स्क्रिप्ट का पूर्ण पथ निर्दिष्ट करके स्क्रिप्ट निष्पादित कर सकते हैं।
  11. echo एक कमांड है जो केवल हमारे द्वारा दिए गए तर्क को आउटपुट करता है। इसका उपयोग वेरिएबल के मान को प्रिंट करने के लिए भी किया जाता है।

बैश-स्टार्टअप फ़ाइलें

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

आमतौर पर आपका bash_profile ~/.bashrc निष्पादित करता है। यदि आप चाहें, तो आप एक स्वागत संदेश दिखा सकते हैं। यह केवल तभी चलता है जब आप पहली बार लॉग इन करते हैं। आप जो चाहें वेरिएबल निर्यात कर सकते हैं, और आप उपनाम सेट कर सकते हैं जो चल रहा होगा और खोल खोलने के बाद उपलब्ध होगा। जब कोई लॉगिन शेल बाहर निकलता है, तो बैश ~/.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. प्रिंट सिस्टम संबंधी जानकारी

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

$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

लास्टलॉग | ग्रेप "रूट" | awk {'प्रिंट" से अंतिम लॉगिन:"$3

प्रिंट "अंतिम लॉगिन दिनांक और समय:",$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

अंतिम लॉगिन यहां से:शशिकला-लैपटॉप

अंतिम लॉगिन तिथि और समय:मंगल 22 फरवरी 11:24:01 +0100 2010

उदाहरण 5. स्टार्टअप के दौरान चर निर्यात करें और उपनाम सेट करें

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

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

alias ls 'ls --color=tty'

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

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

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

$ cat /etc/profile
alias ls 'ls --color=tty'

# Setup some environment variables.
export HISTSIZE=1000

PATH=$PATH:$HOME/bin:/usr/bin:/bin/usr:/sbin/etc

export PATH

export SVN_SH=${SVN_RSH-ssh}

  1. इस बैश स्क्रिप्ट के साथ इमेज प्रोसेसिंग को स्वचालित करें

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

  1. बैश वैरिएबल ट्यूटोरियल - 6 प्रैक्टिकल बैश ग्लोबल और लोकल वेरिएबल उदाहरण

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

  1. बैश शैल फंक्शन ट्यूटोरियल 6 व्यावहारिक उदाहरणों के साथ

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