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

लिनक्स में सरल शैल स्क्रिप्ट कैसे बनाएं

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

इस ट्यूटोरियल में, हम कुछ बुनियादी शेल स्क्रिप्टिंग ऑपरेशंस पर प्रकाश डालते हैं जो प्रत्येक लिनक्स उपयोगकर्ता के पास होने चाहिए।

<एच3>1. एक साधारण शेल स्क्रिप्ट बनाएं

शेल स्क्रिप्ट एक फ़ाइल है जिसमें ASCII . शामिल है मूलपाठ। हम एक साधारण शेल स्क्रिप्ट बनाकर शुरू करेंगे, और ऐसा करने के लिए, हम एक टेक्स्ट एडिटर का उपयोग करेंगे। कमांड लाइन और जीयूआई आधारित दोनों तरह के टेक्स्ट एडिटर काफी संख्या में हैं। इस गाइड के लिए, हम विम संपादक का उपयोग करेंगे।

हम एक साधारण स्क्रिप्ट बनाकर शुरुआत करेंगे जो "नमस्ते दुनिया . प्रदर्शित करती है "जब निष्पादित किया गया।

$ vim hello.sh

फ़ाइल में निम्न सामग्री चिपकाएँ और सहेजें।

#!/bin/bash
# Print Hello world message
echo "Hello World!"

आइए शेल स्क्रिप्ट लाइन को लाइन दर लाइन देखें।

  • पहली पंक्ति - #!/bin/bash - शेबैंग हेडर के रूप में जाना जाता है। यह एक विशेष निर्माण है जो इंगित करता है कि स्क्रिप्ट की व्याख्या करने के लिए किस प्रोग्राम का उपयोग किया जाएगा। इस मामले में, यह बैश . होगा शेल /bin/bash . द्वारा इंगित किया गया है . अन्य स्क्रिप्टिंग भाषाएं हैं जैसे पायथन जिसे #!/usr/bin/python3 . द्वारा दर्शाया जाता है और पर्ल जिसका शेबैंग हैडर #!/usr/bin/perl . द्वारा दर्शाया गया है ।
  • दूसरी पंक्ति एक टिप्पणी है। एक टिप्पणी एक बयान है जो वर्णन करता है कि एक शेल स्क्रिप्ट क्या करती है और जब स्क्रिप्ट चलती है तो उसे निष्पादित नहीं किया जाता है। टिप्पणियाँ हमेशा हैश चिह्न से पहले होती हैं #
  • आखिरी लाइन वह कमांड है जो 'हैलो वर्ल्ड . को प्रिंट करती है टर्मिनल पर संदेश।

अगला चरण chmod . का उपयोग करके निष्पादन अनुमति प्रदान करके स्क्रिप्ट को निष्पादन योग्य बनाना है दिखाए गए अनुसार आदेश।

$ chmod +x  hello.sh

अंत में, किसी भी कमांड का उपयोग करके शेल स्क्रिप्ट चलाएँ:

$ bash hello.sh
OR
$ ./hello.sh
लिनक्स में सरल शैल स्क्रिप्ट कैसे बनाएं <एच3>2. कोड निष्पादित करने के लिए सशर्त कथनों का उपयोग करना

अन्य प्रोग्रामिंग भाषाओं की तरह, सशर्त कथन निर्णय लेने के लिए बैश स्क्रिप्टिंग में उपयोग किया जाता है, सिंटैक्स में केवल थोड़ी भिन्नता के साथ। हम अगर . को कवर करने जा रहे हैं , यदि-अन्य, और एलिफ़ सशर्त बयान।

केवल if Statement का उदाहरण

अगर कथन का उपयोग एकल या एकाधिक स्थितियों का परीक्षण करने के लिए किया जा सकता है। हम if . के मौलिक उपयोग के साथ शुरुआत करेंगे एक शर्त का परीक्षण करने के लिए बयान। अगर कथन if ... fi . द्वारा परिभाषित किया गया है ब्लॉक।

if command
then
  statement
fi

आइए नीचे दी गई शेल स्क्रिप्ट पर एक नज़र डालें।

#!/bin/bash
echo 'Enter the score'
read x

if [[ $x == 70 ]]; then
  echo 'Good job!'
fi

उपरोक्त शेल स्क्रिप्ट उपयोगकर्ता को एक स्कोर प्रदान करने के लिए प्रेरित करती है जिसे तब एक चर x . में संग्रहीत किया जाता है . यदि स्कोर 70 . के अनुरूप है , स्क्रिप्ट आउटपुट देता है “अच्छा काम! " तुलना ऑपरेटर == यह जांचने के लिए प्रयोग किया जाता है कि क्या स्कोर दर्ज किया गया है, जो चर x . में संग्रहीत है , 100 . के बराबर है ।

लिनक्स में सरल शैल स्क्रिप्ट कैसे बनाएं

आप जिन अन्य तुलना ऑपरेटरों का उपयोग कर सकते हैं उनमें शामिल हैं:

  • -eq - बराबर
  • -ne - के बराबर नहीं
  • -lt - इससे कम
  • -le - इससे कम या इसके बराबर
  • -lt - इससे कम
  • -ge - इससे बड़ा या इसके बराबर

उदाहरण के लिए, if-statement नीचे ब्लॉक करें प्रिंट आउट 'अधिक मेहनत करें ' यदि इनपुट स्कोर 50 . से कम कोई मान है ।

if [[ $x -lt 50 ]]; then
  echo 'Work Harder!'
fi
लिनक्स में सरल शैल स्क्रिप्ट कैसे बनाएं

अगर-और-कथन का उदाहरण

उन स्थितियों के लिए जहां आपके 2 संभावित परिणाम हैं:- चाहे यह या वह - अगर-और कथन काम में आता है।

if command
then
  statement1
else
  statement2
fi

नीचे दी गई स्क्रिप्ट इनपुट स्कोर को पढ़ती है और जांचती है कि यह 70 . से अधिक या बराबर है या नहीं ।

यदि स्कोर 70 . से अधिक या उसके बराबर है , आपको एक 'शानदार नौकरी, आप उत्तीर्ण हो गए! ' संदेश। हालांकि, अगर स्कोर 70 . से नीचे आता है , आउटपुट 'आप विफल ' प्रिंट किया जाएगा।

#!/bin/bash

echo 'Enter the score'

read x

if [[ $x -ge 70 ]]; then
  echo 'Great job, You passed!'
else
  echo  'You failed'
fi
लिनक्स में सरल शैल स्क्रिप्ट कैसे बनाएं

if-elif-else कथन का उदाहरण

ऐसे परिदृश्यों में जहां कई स्थितियां और अलग-अलग परिणाम होते हैं, if-elif-else कथन का प्रयोग किया जाता है। यह कथन निम्नलिखित प्रारूप लेता है।

if condition1
then
  statement1
elif condition2
then
  statement2
else
  statement3
fi

उदाहरण के लिए, हमारे पास लॉटरी के लिए एक स्क्रिप्ट है जो यह जांचती है कि दर्ज की गई संख्या 90 . है या नहीं , 60 या 30

#!/bin/bash

echo 'Enter the score'

read x

if [[ $x -eq 90 ]];
then
  echo “You have won the First Prize”

elif [[ $x -eq 60 ]];
then
  echo “You have won the Second Prize”

elif [[ $x -eq 30 ]];
then 
  echo “You have won the Second Prize”
else
  echo “Please try again”
fi
लिनक्स में सरल शैल स्क्रिप्ट कैसे बनाएं <एच3>3. AND लॉजिक के साथ if Statement का उपयोग करना

आप अगर . का उपयोग कर सकते हैं और . के साथ कथन लॉजिक ऑपरेटर एक कार्य को निष्पादित करने के लिए यदि दो शर्तें पूरी होती हैं। && ऑपरेटर का प्रयोग और . को दर्शाने के लिए किया जाता है तर्क।

#!/bin/bash

echo 'Please Enter your user_id'
read user_id

echo 'Please Enter your tag_no'
read tag_id

if [[ ($user_id == “tecmint” && $tag_id -eq 3990) ]];
then
  echo “Login successful”
else
  echo “Login failure”
fi

5. OR लॉजिक के साथ if Statement का उपयोग करना

या . का उपयोग करते समय तर्क, जिसे || . द्वारा दर्शाया जाता है प्रतीक, अपेक्षित परिणाम देने के लिए किसी एक शर्त को स्क्रिप्ट से संतुष्ट होना चाहिए।

#!/bin/bash

echo 'Please enter a random number'
read number

if [[ (number -eq 55 || number -eq 80) ]];
then
 echo 'Congratulations! You’ve won'
else
 echo 'Sorry, try again'
fi
लिनक्स में सरल शैल स्क्रिप्ट कैसे बनाएं

लूपिंग कंस्ट्रक्शंस का उपयोग करें

बैश लूप उपयोगकर्ताओं को एक निश्चित परिणाम प्राप्त होने तक कार्यों की एक श्रृंखला करने की अनुमति देता है। यह दोहराए जाने वाले कार्यों को करने में काम आता है। इस खंड में, हम कुछ लूपों पर एक नज़र डालेंगे जो आपको अन्य प्रोग्रामिंग भाषाओं में भी मिलेंगे।

लूप के दौरान

यह काम करने के लिए सबसे आसान छोरों में से एक है। वाक्य रचना काफी सरल है:

while  <some test>
do
 commands
done

जबकि नीचे दिया गया लूप निष्पादित होने पर 1 से 10 तक की सभी संख्याओं को सूचीबद्ध करता है।

#!/bin/bash
# A simple while loop
counter=1
while [ $counter -le 10 ]
 do
echo $counter
 ((counter++))
done

चलो लूप पर चर्चा करते हैं:

चर काउंटर 1 . से प्रारंभ किया गया है . और जबकि वेरिएबल 10 . से कम या उसके बराबर है , काउंटर का मूल्य तब तक बढ़ाया जाएगा जब तक कि शर्त पूरी नहीं हो जाती। पंक्ति $काउंटर प्रतिध्वनित करें 1 से 10 तक के सभी नंबरों को प्रिंट करता है।

लिनक्स में सरल शैल स्क्रिप्ट कैसे बनाएं

लूप के लिए

थोड़ी देर की तरह लूप , एक लूप के लिए कोड को पुनरावृत्त रूप से निष्पादित करने के लिए उपयोग किया जाता है। अर्थात। उपयोगकर्ता द्वारा परिभाषित जितनी बार संभव हो कोड निष्पादन दोहराएं।

वाक्य रचना है:

for var in 1 2 3 4 5 N
do
 command1
 command2
done

लूप के लिए नीचे 1 से 10 के माध्यम से पुनरावृत्त होता है और स्क्रीन पर उनके मूल्यों को संसाधित करता है।

लिनक्स में सरल शैल स्क्रिप्ट कैसे बनाएं

इसे प्राप्त करने का एक बेहतर तरीका डबल कर्ली ब्रेसिज़ का उपयोग करके एक श्रेणी को परिभाषित करना है { } जैसा कि सभी नंबरों को टाइप करने के बजाय दिखाया गया है।

#!/bin/bash
# Specify range in a for loop

for num in {1..10}
do
  echo $num
done

बैश स्थितीय पैरामीटर

एक स्थितीय पैरामीटर एक विशेष चर है जिसे स्क्रिप्ट में संदर्भित किया जाता है जब मान को शेल पर पारित किया जाता है लेकिन असाइन नहीं किया जा सकता है। स्थितीय पैरामीटर $0 $1 $2 $3 . से चलते हैं …… से $9 . $9 . से परे मान, पैरामीटर को घुंघराले कोष्ठकों में संलग्न करना होगा जैसे ${10}, ${11} … और इसी तरह।

स्क्रिप्ट निष्पादित करते समय, पहला स्थितीय पैरामीटर जो $0 . है शेल स्क्रिप्ट का नाम लेता है। $1 पैरामीटर टर्मिनल पर पारित पहला चर लेता है, $2 दूसरा लेता है, $3 तीसरा और इसी तरह।

जैसा दिखाया गया है, आइए एक स्क्रिप्ट test.sh बनाएं।

#!/bin/bash
echo "The name of the script is: " $0
echo "My first name is: " $1
echo "My second name is: " $2

इसके बाद, स्क्रिप्ट निष्पादित करें और तर्क के रूप में पहला और दूसरा नाम प्रदान करें:

# bash test.sh James Kiarie
लिनक्स में सरल शैल स्क्रिप्ट कैसे बनाएं

आउटपुट से, हम देख सकते हैं कि प्रिंट किया गया पहला वेरिएबल शेल स्क्रिप्ट का नाम है, इस मामले में, test.sh . इसके बाद, शेल स्क्रिप्ट में परिभाषित स्थितीय मापदंडों के अनुरूप नामों का प्रिंट आउट लिया जाता है।

स्थितिगत पैरामीटर इस मायने में उपयोगी होते हैं कि वे किसी चर को स्पष्ट रूप से मान निर्दिष्ट करने के बजाय दर्ज किए जा रहे डेटा को अनुकूलित करने में आपकी सहायता करते हैं।

शेल कमांड एग्जिट कोड

आइए एक सरल प्रश्न का उत्तर देकर प्रारंभ करें, निकास कोड क्या है ?

उपयोगकर्ता या शेल स्क्रिप्ट द्वारा शेल पर निष्पादित प्रत्येक कमांड की एक निकास स्थिति होती है। एक निकास स्थिति एक पूर्णांक है।

0 . की निकास स्थिति तात्पर्य यह है कि कमांड को बिना किसी त्रुटि के सफलतापूर्वक निष्पादित किया गया। 1 से 255 . के बीच कुछ भी दिखाता है कि आदेश विफल हुआ या सफलतापूर्वक निष्पादित नहीं हुआ।

किसी आदेश की निकास स्थिति जानने के लिए, $? . का उपयोग करें शैल चर।

एक सामान्य त्रुटि या किसी भी अनुमेय त्रुटि जैसे कि sudo अनुमतियों के बिना फ़ाइलों को संपादित करने के लिए 1 अंक की निकास स्थिति।

एक कमांड या बिल्टिन शेल वैरिएबल के गलत उपयोग के लिए 2 अंक की निकास स्थिति।

127 निकास स्थिति एक अवैध कमांड की ओर इशारा करती है जो आमतौर पर 'आदेश नहीं मिला . उत्पन्न करती है ' त्रुटि।

लिनक्स में सरल शैल स्क्रिप्ट कैसे बनाएं

एक स्क्रिप्ट के भीतर शेल कमांड के आउटपुट को प्रोसेस करना

बैश स्क्रिप्टिंग में, आप भविष्य में उपयोग के लिए एक कमांड के आउटपुट को एक वेरिएबल में स्टोर कर सकते हैं। इसे शेल कमांड प्रतिस्थापन के रूप में भी जाना जाता है और इसे निम्नलिखित तरीकों से प्राप्त किया जा सकता है।

variable=$(command)
OR
variable=$(/path/to/command)
OR
variable=$(command argument 1 argument 2 ...)

उदाहरण के लिए, आप तारीख . को स्टोर कर सकते हैं आज . नामक चर में कमांड और वर्तमान तिथि को प्रकट करने के लिए शेल स्क्रिप्ट को कॉल करें।

#!/bin/bash

today=$(date)

echo “Today is $today”
लिनक्स में सरल शैल स्क्रिप्ट कैसे बनाएं

आइए एक और उदाहरण लेते हैं। मान लीजिए आप अपने लिनक्स सिस्टम पर वैध लॉगिन उपयोगकर्ता ढूंढना चाहते हैं। आप इसके बारे में कैसे जाएंगे? सबसे पहले, सभी उपयोगकर्ताओं (सिस्टम, प्रक्रिया और लॉगिन उपयोगकर्ता दोनों) की सूची /etc/passwd में संग्रहीत की जाती है फ़ाइल।

फ़ाइल देखने के लिए, आपको कैट कमांड का उपयोग करना होगा। हालांकि, उपयोगकर्ताओं में लॉग इन करने के लिए, /bin/bash वाले उपयोगकर्ताओं को खोजने के लिए grep कमांड का उपयोग करें विशेषता और कट-सी 1-10 . का उपयोग करें नाम के पहले 10 वर्णों को प्रदर्शित करने के लिए दिखाया गया आदेश।

हमने बिल्ली कमांड . को संगृहीत कर लिया है login_users . को चर।

#!/bin/bash
login_users=$(cat /etc/passwd | grep /bin/bash | cut -c 1-10)
echo 'This is the list of login users:
echo $login_users
लिनक्स में सरल शैल स्क्रिप्ट कैसे बनाएं

यह सरल शेल स्क्रिप्ट बनाने पर हमारे ट्यूटोरियल को समाप्त करता है। हमें उम्मीद है कि आपको यह मूल्यवान लगा होगा।


  1. अपने शैल लिपियों में लूप तक कैसे उपयोग करें

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

  1. शेल स्क्रिप्ट में सिंटेक्स चेकिंग डिबगिंग मोड कैसे करें

    हमने विभिन्न डिबगिंग विकल्पों और शेल स्क्रिप्ट डिबगिंग मोड को सक्षम करने के तरीके के बारे में बताकर शेल स्क्रिप्ट डिबगिंग श्रृंखला शुरू की। आपकी शेल स्क्रिप्ट लिखने के बाद, यह अनुशंसा की जाती है कि हम स्क्रिप्ट्स को चलाने से पहले उनके सिंटैक्स को व्यावहारिक रूप से जांच लें, न कि उनके आउटपुट को देखन

  1. विम में शैल स्क्रिप्ट के लिए कस्टम हेडर टेम्पलेट कैसे बनाएं?

    इस लेख में, हम आपको विम संपादक में सभी नई बनाई गई बैश स्क्रिप्ट के लिए कस्टम हेडर को कॉन्फ़िगर करने का एक आसान तरीका दिखाएंगे। इसका मतलब है कि हर बार जब आप एक नया .sh खोलते हैं vi/vim संपादक का उपयोग कर फ़ाइल, कस्टम हेडर स्वचालित रूप से फ़ाइल में जोड़ दिया जाएगा। कस्टम बैश स्क्रिप्ट हेडर टेम्प्लेट फ