बैश में प्रोग्रामिंग - भाग 1

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

एक "स्क्रिप्ट" क्या है?

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

बैश द्वारा उपयोग की जाने वाली भाषा अपने स्वयं के दुभाषिया द्वारा परिभाषित की जाती है और अन्य शेल के सिंटैक्स को जोड़ती है, जैसे कि कॉर्न शेल (ksh) या सी शेल (csh)। आमतौर पर कंसोल में उपयोग किए जाने वाले कई कमांड का उपयोग स्क्रिप्ट में भी किया जा सकता है, सिवाय उन लोगों के जो किसी विशेष वितरण से संबंधित हैं।

एक स्क्रिप्ट की संरचना

शुरू करने के लिए हमारे पास एक पाठ संपादक और प्रोग्राम करने की इच्छा होनी चाहिए। हम .sh एक्सटेंशन के साथ जिन फ़ाइलों को सहेजते हैं, उन्हें कंसोल द्वारा निष्पादित (या व्याख्या) किया जा सकता है, जब तक कि पहली पंक्ति निम्नलिखित थी:

#! / Bin / bash

यह फ़ाइल को चलाने के लिए कंसोल का उपयोग करने के लिए सिस्टम को बताता है। इसके अलावा, # वर्ण आपको टिप्पणी लिखने की अनुमति देता है। सबसे सरल उदाहरण बनाने के लिए हम एक और पंक्ति जोड़ते हैं, जो निम्न छवि में देखी गई है:

इको कमांड स्क्रीन पर एक संदेश प्रदर्शित करता है, इस मामले में विशिष्ट "हैलो वर्ल्ड!" यदि हम इसे सहेजते हैं और कंसोल के साथ निष्पादित करते हैं, तो हम परिणाम देखेंगे।

बेसिक कमांड्स

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

उपनाम: कोड कम करने की अनुमति देते हुए शब्दों की एक स्ट्रिंग को एक छोटे से प्रतिस्थापित करने की अनुमति देता है।

#create एक उपनाम कहा जाता है, जिसे #Downloads फ़ोल्डर के उपनाम के साथ प्रति = '/ / घर / उपयोगकर्ता / डाउनलोड' # हर समय हम इसे इस्तेमाल करना चाहते हैं, हमें बस # नए शब्द का उपयोग करना होगा #To को नष्ट करें, हम अनलिया अनलियास प्रति उपयोग करें

ब्रेक: आपको तुरंत एक के लिए बाहर निकलने की अनुमति देता है, जबकि, जब तक या लूप का चयन नहीं करता है (हम बाद में लूप का विस्तार से अध्ययन करेंगे)

# एक लूप बनाएं जो 1 5 से 1 # संख्या में प्रत्येक "लूप की बारी" को 2 3 4 5 3 में काउंटर के लिए असाइन करेगा। हम # वेरिएंट के वर्तमान मूल्य को प्रिंट करते हैं, जिसका विश्लेषण वर्ण $ द्वारा किया जाता है। इको "$ काउंटर" # यदि काउंटर मान 3 के बराबर है अगर [$ काउंटर -XNUMX] तो # ब्रेक ब्रेक फाई के लिए लूप से बाहर निकलता है

जारी रखें - ब्रेक के समान, सिवाय इसके कि यह वर्तमान लूप को अनदेखा करता है और अगले एक पर जाता है।

# एक लूप बनाएं जो 1 से 5 तक संख्याओं को निर्दिष्ट करेगा # प्रत्येक के लिए "लूप की बारी" 1 2 3 4 5 में काउंटर के लिए करें # यदि काउंटर मूल्य 3 के बराबर है यदि [$ काउंटर -3] तो # जारी रखें शेष वर्तमान # चक्र को अगले दौर में कूदकर विश्लेषण करने से रोकता है, अर्थात, # 3 अंक मुद्रित नहीं किया जाएगा। जारी रखा फाई गूंज "$ काउंटर" किया

डिक्लेयर: वैरिएबल घोषित करता है और उन्हें टाइप्स की तरह मान देता है (वे उसी तरह काम करते हैं)। हम इसे कुछ विकल्पों के साथ जोड़ सकते हैं: -आई पूर्णांक घोषित करता है; केवल पढ़ने के लिए चर, जिसका मूल्य नहीं बदला जा सकता है; -एरेज़ या "ऐरे" के लिए; कार्यों के लिए -f; -एक्स चर के लिए जो स्क्रिप्ट के वातावरण के बाहर "निर्यात" किया जा सकता है।

डिक्लेयर –i संख्या = 12 डिक्लेयर –x pi = 3.14

मदद: एक विशिष्ट आदेश के लिए मदद दिखाता है।

नौकरियों: चल रही प्रक्रियाओं को दर्शाता है।

# -C के साथ हम प्रत्येक प्रक्रिया के -p # pid (प्रोसेस आईडी) के साथ कमांड्स का नाम दिखाते हैं। नौकरियों-सी पी

आज्ञा देना: एक अंकगणितीय अभिव्यक्ति का मूल्यांकन करें

a = 11 को a = 5 a + 16 #Finally हम प्रिंट करते हैं, जिसका मान 11 इको "5 + XNUMX + $" है।

स्थानीय: स्थानीय चर बनाएँ, जो त्रुटियों से बचने के लिए स्क्रिप्ट के कार्यों में अधिमानतः उपयोग किया जाना चाहिए। आप घोषित कमांड के समान कार्यों का उपयोग कर सकते हैं।

स्थानीय v1 = "यह एक स्थानीय चर है"

लॉगआउट: शेल से पूरी तरह से लॉग आउट करने की अनुमति देता है; उन मामलों के लिए उपयोगी है जहां हम एक से अधिक शेल विंडो के साथ काम करते हैं, जिसमें एग्जिट कमांड केवल एक विंडो को एक बार में समाप्त करने की अनुमति देगा।

प्रिंटफ: आपको डेटा प्रिंट करने और उसे प्रारूपित करने की अनुमति देता है। इसके कई विकल्प हैं, इसलिए हम कुछ का उल्लेख करेंगे।

#% f प्रिंट्स एक फ्लोटिंग नंबर के रूप में, n नए # लाइन प्रिंटफ "% fn" 5 5.000000 # & d के लिए दशमलव संख्याओं को तर्क प्रिंट के रूप में पास करने की अनुमति देता है "% d डॉलर में मूल्यवान% डी ऑर्डर हैं।" 20 500 20 डॉलर में 500 ऑर्डर मूल्यवान हैं।

पढ़ा: मानक इनपुट (उदाहरण के लिए कीबोर्ड के माध्यम से डेटा लोड करने में प्रयुक्त मॉड्यूल) से एक पंक्ति पढ़ें। हम एक पढ़ने की सीमा समय देने के लिए जैसे: -t पास कर सकते हैं; -साथ ताकि प्रत्येक शब्द को एनाम सरणी में एक पद सौंपा जाए; -सी लाइन के अंत में लिखे जाने के लिए एक सीमांकक का उपयोग करना; दूसरों के बीच में।

गूंज "अपना नाम दर्ज करें और ENTER दबाएँ" # चर नाम पढ़ें रीड नाम "आपका नाम $ नाम है"

प्रकार: एक कमांड और उसके व्यवहार का वर्णन करता है। प्रत्येक कमांड के लिए डेटा परिभाषाओं का पता लगाना उपयोगी हो सकता है।

type –a '[' #type हमें बताता है कि [शेल शेलिन कमांड है [शेल शेलिन # -a उन निर्देशिकाओं को खोजने की अनुमति देता है जिनमें लिखित नाम के साथ एक निष्पादन योग्य # होता है। [है / usr / बिन / [

ulimit: कुछ सिस्टम संसाधनों की प्रक्रियाओं तक पहुंच और उपयोग को सीमित करता है, ऐसे कार्यक्रमों के लिए आदर्श है जो प्रशासनिक परिवर्तन की अनुमति देते हैं या जो विभिन्न प्रकार के उपयोगकर्ताओं के लिए लक्षित होते हैं। सीमा निर्धारित करते समय हम एक संख्या लिखते हैं जो सीमा के किलोबाइट का प्रतिनिधित्व करती है।

# हम देखते हैं कि हमारी वर्तमान सीमाएं ulimit –a # -f उपयोगकर्ताओं को सीमित करने की अनुमति नहीं देती हैं जो 512000 Kb (500 #Mb) से अधिक की फ़ाइलें बनाने में सक्षम नहीं हैं ulimit –f 512000 # -v इस प्रक्रिया की आभासी मेमोरी को सीमित करता है। ulimit –v 512000

प्रतीक्षा करें: जारी रखने के लिए किसी निश्चित प्रक्रिया या नौकरी के लिए प्रतीक्षा करें।

# स्क्रिप्ट पीआईडी ​​# 2585 की प्रक्रिया का इंतजार करती है

प्रतीक्षा करें ०

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

!!: फिर से अंतिम आदेश चलाएँ

!:: अंतिम कमांड को निष्पादित करता है जो कि अभिव्यक्ति के साथ शुरू हुआ था।

'==', '! =', '>', '<', '> =', और '<=': संबंधपरक संचालक।

|: OR ऑपरेटर आमतौर पर दो नियमित अभिव्यक्तियों में शामिल होता था।

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

शुक्रिया जुआन कार्लोस ऑर्टिज़!

10 टिप्पणियाँ, तुम्हारा छोड़ दो

अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।

  1.   मध्यम कठिन कहा

    महान! वैसे भी 2 टिप्पणियाँ: उबंटू टैग आधा बहुत अधिक है, क्योंकि यह कुछ सामान्य करता है जो सामान्य है। और अगर ये ट्यूटोरियल आगे बढ़ना जारी रखते हैं, तो अच्छा होगा अगर वे एक-दूसरे से जुड़े हों।
    इसके अलावा, यह कदम दिलचस्प है!

  2.   चलो लिनक्स का उपयोग करें कहा

    अच्छा योगदान! महान!

  3.   जियोवन्नी एस्कोबार सोसा कहा

    केवल उन लोगों के लिए गायब संदर्भ जो मामले में अधिक प्राप्त करना चाहते हैं। कुछ अच्छे हालांकि हमारे देशों में खोजने के लिए इतना आसान नहीं हैं
    - लिनक्स कमांड्स, एडिटर्स और शेल प्रोग्रामिंग के लिए एक व्यावहारिक गाइड, मार्क सोबेल (अध्याय 8)
    - प्रो बैश प्रोग्रामिंग, क्रिस एफए जॉनसन (हालांकि यह उन लोगों के लिए है जिनके पास अन्य संदर्भ या थोड़ा अधिक ज्ञान है)।

    ब्यूएन आर्टिकुलो।

  4.   चलो लिनक्स का उपयोग करें कहा

    शुभ तिथि! धन्यवाद!

  5.   पैट्रीकियो डोरेंटेस जमरने कहा

    : @ "लॉग इन के रूप में" फ़ंक्शन ने मेरी पिछली टिप्पणी को हटा दिया, इसलिए मैं इसे आगे संक्षेप में बताऊंगा:
    नौकरियों-सी पी
    bash: jobs: -c: अमान्य विकल्प
    नौकरियां: उपयोग: नौकरियां [-lnprs] [jobspec…] या जॉब्स -x कमांड [args]

    -eq -gt -lt दशमलव बिंदु चर को स्वीकार नहीं करते हैं, मंच और मंच के बीच मैंने पाया कि bc एक अच्छा सहयोगी है:
    अगर [`इको 9.999> 10 | bc` -eq 1]; फिर
    गूंज "9.999 10 से अधिक है, सुनिश्चित करें कि आपका प्रोसेसर अभी भी काम कर रहा है"
    अन्य
    गूंज «9.999 10 से अधिक नहीं है, सब कुछ सामान्य रूप से काम करता है
    fi

  6.   ब्रुकलिन से नहीं कहा

    यह पोस्ट बैश स्क्रिप्टिंग की सभी सामान्यताओं को बहुत अच्छी तरह से सारांशित करता है:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    इस साइट पर आपको कई अजीबोगरीब सवाल और जवाब मिलेंगे:
    http://unix.stackexchange.com/questions/tagged/bash

    यहाँ कुछ वास्तव में अच्छी स्क्रिप्ट हैं, और हे, आप उन्हें अन्य लोगों की स्क्रिप्ट पढ़कर सीख सकते हैं:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   ब्रुकलिन से नहीं कहा

    बैश को छोड़कर आप जो कहते हैं, उसके साथ आप सही हैं। मैंने जो भी सिस्टम देखा है उसमें / बिन / बैश में बैश है।

    लेकिन अजगर, पर्ल, रूबी, आदि के लिए, इसका उपयोग करना ठीक है। मैं करता हूँ

  8.   Guille कहा

    संयोग से, कॉलेज में, हम बैश स्क्रिप्टिंग का उपयोग कर रहे हैं, इसलिए डेटा 10, बहुत अच्छा है!

  9.   एलेक्स vi कहा

    डाउनलोड करने के लिए एक पीडीएफ संस्करण अच्छा होगा !! 😀

  10.   मार्को एंटोनियो डी फ्यूएंटेस कहा

    बहुत अच्छी साइट है। मैंने आखिरकार कुछ उपयोगी पाया। धन्यवाद।