'शेल स्क्रिप्टिंग' श्रृंखला के पिछले लेखों की अत्यधिक सराहना की गई थी और इसलिए मैं सीखने की कभी न खत्म होने वाली प्रक्रिया को विस्तारित करने के लिए यह लेख लिख रहा हूँ।
- बेसिक Linux Shell Scripting Language Tips को समझें - भाग I
- Linux Newbies के लिए Shell Programming सीखने के लिए 5 Shell Scripts - भाग II
Bash Keywords
एक कीवर्ड एक शब्द या प्रतीक है जिसका कंप्यूटर भाषा के लिए विशेष अर्थ होता है। निम्नलिखित प्रतीकों और शब्दों का Bash के लिए विशेष अर्थ होता है जब वे अनकोटेड होते हैं और कमांड का पहला शब्द होते हैं।
! esac select } case fi then [[ do for until ]] done function while elif if time else in {
अधिकांश कंप्यूटर भाषाओं के विपरीत, Bash कीवर्ड्स को वेरिएबल नामों के रूप में उपयोग करने की अनुमति देता है भले ही इससे स्क्रिप्ट पढ़ने में कठिन हो सकती है। स्क्रिप्ट को समझने योग्य रखने के लिए, कीवर्ड्स का उपयोग वेरिएबल नामों के लिए नहीं किया जाना चाहिए।
एक कमांड को शेल में $(command) के रूप में लागू किया जाता है। आपको कमांड का पूरा पथ शामिल करना पड़ सकता है। उदा., $(/bin/date), सही निष्पादन के लिए।
आप 'whereis' कमांड का उपयोग करके विशिष्ट प्रोग्राम का पथ जान सकते हैं। उदा., whereis date
[admin@wsxdn.com /]# whereis date date: /bin/date /usr/share/man/man1/date.1.gz
अभी के लिए इतना पर्याप्त है। हम अब इन सिद्धांतों के बारे में ज्यादा बात नहीं करेंगे। स्क्रिप्ट्स पर आते हैं।
वर्तमान कार्य निर्देशिका ले जाएँ
स्क्रिप्ट को निष्पादित करते समय अंत में संख्यात्मक मान प्रदान करके वर्तमान कार्य निर्देशिका से किसी भी स्तर तक ऊपर जाएँ।
#! /bin/bash LEVEL=$1 for ((i = 1; i <= LEVEL; i++)) do CDIR=../$CDIR done cd $CDIR echo "You are in: "$PWD exec /bin/bash
उपरोक्त कोड को "up.sh" के रूप में सहेजें, अपने डेस्कटॉप पर। इसे निष्पादन योग्य बनाएं (chmod 755 up.sh)। चलाएं:
./up.sh 2 (वर्तमान कार्य निर्देशिका को दो स्तर ऊपर ले जाएगा)।
./up.sh 4 (वर्तमान कार्य निर्देशिका को चार स्तर ऊपर ले जाएगा)।
उपयोग और अनुप्रयोग क्षेत्र
बड़े स्क्रिप्ट्स में जिनमें फोल्डर के अंदर फोल्डर के अंदर... लाइब्रेरीज़, बाइनरीज़, आइकन्स, एक्सीक्यूटेबल्स, आदि विभिन्न स्थानों पर होते हैं, आप एक डेवलपर के रूप में वांछित स्थान पर बहुत स्वचालित तरीके से जाने के लिए इस स्क्रिप्ट को लागू कर सकते हैं।
नोट: उपरोक्त स्क्रिप्ट में for एक लूप है और यह तब तक निष्पादित होता रहेगा जब तक लूप के लिए मान सत्य हैं।
नमूना आउटपुट
[admin@wsxdn.com /]# chmod 755 up [admin@wsxdn.com /]# ./up.sh 2 You are in: / [admin@wsxdn.com /]# ./up.sh 4 You are in: / [admin@wsxdn.com /]#
Download up.sh
रैंडम फ़ाइल या फ़ोल्डर बनाएं
डुप्लिकेशन की कोई संभावना नहीं के साथ एक रैंडम फ़ाइल (फ़ोल्डर) बनाएं।
#! /bin/bash echo "Hello $USER"; echo "$(uptime)" >> "$(date)".txt echo "Your File is being saved to $(pwd)"
यह एक सरल स्क्रिप्ट है लेकिन इसका काम इतना सरल नहीं है।
- 'echo' : कोट्स के भीतर लिखी हर चीज को प्रिंट करता है।
- '$' : एक शेल वेरिएबल है।
- '>>' : आउटपुट को date कमांड के आउटपुट के बाद txt एक्सटेंशन के साथ रीडायरेक्ट किया जाता है।
हम जानते हैं कि date कमांड का आउटपुट date, और time hour, minute, second के साथ year में होता है। इसलिए हम एक संगठित फ़ाइल नाम पर आउटपुट प्राप्त कर सकते हैं बिना फ़ाइल नाम डुप्लिकेशन की संभावना के। यह बहुत उपयोगी हो सकता है जब उपयोगकर्ता को भविष्य के संदर्भ के लिए टाइम स्टैम्प के साथ फ़ाइल बनाने की आवश्यकता होती है।
नमूना आउटपुट
[admin@wsxdn.com /]# ./randomfile.sh Hello server Your File is being saved to /home/server/Desktop
आप डेस्कटॉप पर आज की तारीख और वर्तमान समय के साथ बनाई गई फ़ाइल देख सकते हैं।
[admin@wsxdn.com /]# nano Sat\ Jul\ 20\ 13\:51\:52\ IST\ 2013.txt 13:51:52 up 3:54, 1 user, load average: 0.09, 0.12, 0.08
उपरोक्त स्क्रिप्ट का एक अधिक विस्तृत कार्यान्वयन नीचे दिया गया है, जो उपरोक्त सिद्धांत पर काम करता है और Linux सर्वर की नेटवर्क जानकारी एकत्र करने में बहुत उपयोगी है।
Download randomfile.sh
नेटवर्क जानकारी एकत्र करने के लिए स्क्रिप्ट
Linux सर्वर पर नेटवर्क जानकारी एकत्र करता है। स्क्रिप्ट बहुत बड़ी है और यहां पूरे कोड और स्क्रिप्ट के आउटपुट को पोस्ट करना संभव नहीं है। इसलिए, बेहतर है कि आप नीचे दिए गए डाउनलोड लिंक का उपयोग करके स्क्रिप्ट डाउनलोड करें और इसे स्वयं टेस्ट करें।
नोट: आपको lsb-core पैकेज और अन्य आवश्यक पैकेज और निर्भरता इंस्टॉल करने की आवश्यकता हो सकती है। आवश्यक पैकेज Apt या Yum करें। जाहिर है आपको रूट होना होगा क्योंकि यहां उपयोग की जाने वाली अधिकांश कमांड्स को रूट के रूप में चलाने के लिए कॉन्फ़िगर किया गया है।
नमूना आउटपुट
[admin@wsxdn.com /]# ./collectnetworkinfo.sh The Network Configuration Info Written To network.20-07-13.info.txt. Please email this file to admin@wsxdn.com_provider.com. ktop
आप अपने स्क्रिप्ट में उपरोक्त ईमेल पते को बदल सकते हैं ताकि यह आपको मेल किया जाए। स्वचालित रूप से उत्पन्न फ़ाइल देखी जा सकती है।
Download collectnetworkinfo.sh
UPPERCASE को lowercase में बदलने के लिए स्क्रिप्ट
एक स्क्रिप्ट जो UPPERCASE को lowercase में परिवर्तित करती है और आउटपुट को एक टेक्स्ट फ़ाइल "small.txt" में रीडायरेक्ट करती है जिसे आवश्यकतानुसार संशोधित किया जा सकता है।
#!/bin/bash echo -n "Enter File Name : " read fileName if [ ! -f $fileName ]; then echo "Filename $fileName does not exists" exit 1 fi tr '[A-Z]' '[a-z]' < $fileName >> small.txt
उपरोक्त स्क्रिप्ट किसी भी लंबाई की फ़ाइल के केस को एक क्लिक से uppercase से lowercase में परिवर्तित कर सकती है और यदि आवश्यक हो तो थोड़े संशोधन के साथ इसके विपरीत भी।
नमूना आउटपुट
[admin@wsxdn.com /]# ./convertlowercase.sh Enter File Name : a.txt Initial File: A B C D E F G H I J K ...
नई फ़ाइल (small.txt) आउटपुट:
a b c d e f g h i j k ...
Download convertlowercase.sh
सरल कैलकुलेटर प्रोग्राम
#! /bin/bash clear sum=0 i="y" echo " Enter one no." read n1 echo "Enter second no." read n2 while [ $i = "y" ] do echo "1.Addition" echo "2.Subtraction" echo "3.Multiplication" echo "4.Division" echo "Enter your choice" read ch case $ch in 1)sum=`expr $n1 + $n2` echo "Sum ="$sum;; 2)sum=`expr $n1 - $n2` echo "Sub = "$sum;; 3)sum=`expr $n1 \* $n2` echo "Mul = "$sum;; 4)sum=`expr $n1 / $n2` echo "Div = "$sum;; *)echo "Invalid choice";; esac echo "Do u want to continue (y/n)) ?" read i if [ $i != "y" ] then exit fi done
नमूना आउटपुट
[admin@wsxdn.com /]# ./simplecalc.sh Enter one no. 12 Enter second no. 14 1.Addition 2.Subtraction 3.Multiplication 4.Division Enter your choice 1 Sum =26 Do u want to continue (y/n)) ? y 1.Addition 2.Subtraction 3.Multiplication 4.Division Enter your choice 3 mul = 14812 Do u want to continue (y/n)) ? n
Download simplecalc.sh
तो क्या आपने देखा कि गणना जैसे शक्तिशाली प्रोग्राम को इतने सरल तरीके से बनाना कितना आसान था। यह अंत नहीं है। हम इस श्रृंखला का कम से कम एक और लेख लाएंगे, जिसमें प्रशासन के दृष्टिकोण से व्यापक परिप्रेक्ष्य शामिल होगा।
अभी के लिए बस इतना ही। पाठक और सर्वश्रेष्ठ आलोचक होने के नाते, हमें बताना न भूलें कि आपने इस लेख में कितना और क्या आनंद लिया और आप भविष्य के लेख में क्या देखना चाहते हैं। कोई भी प्रश्न कमेंट में अत्यधिक स्वागत है। तब तक स्वस्थ, सुरक्षित और ट्यून्ड रहें। हमें लाइक और शेयर करें और हमें फैलाने में मदद करें।