बॅश वापरून आपल्या स्वतःच्या स्क्रिप्ट तयार करा

लिनक्स शिकणे

आपण वापरत असलेल्या लिनक्स वितरणाकडे दुर्लक्ष करून, या प्रणालीच्या उपयोगात येताच माझे आवडते उबंटू आहे यात शंका नाही. ऑटोमेशन आवश्यक आहे. असे म्हणायचे आहे: आमचे तयार करा स्वत: च्या आज्ञा जे विशिष्ट आदेश वैयक्तिकृत मार्गाने करतात. ही गरज विशिष्ट कारणांमुळे होऊ शकतेः

  • वाक्यरचना सुलभ करा आपण सहसा कार्यान्वित केलेल्या कमांडसचा.
  • कोणत्याही व्यापलेल्या कृती करा ही प्रणालीमध्ये पूर्वदृष्ट्या नसलेली गरज आहे कार्यरत
  • क्रम ऑर्डर आम्ही निश्चितपणे पुनरावृत्ती करतो.

जरी बॅश स्क्रिप्ट कोणत्याही निर्देशिकेत / मधून चालविली जाऊ शकते, ती सहसा असते या स्क्रिप्ट्स होस्ट करण्यासाठी डिरेक्टरी बनवा. माझ्या बाबतीत:

$ mkdir /home/pedro/.bin

माझा यावर विश्वास आहे निर्देशिका (नावाच्या आधीच्या कालावधीचे अग्रगण्य करून लपविलेले) मी तिथे वापरलेल्या सर्व स्क्रिप्ट्स ठेवण्यासाठी. त्या निर्देशिकेचे नाव लपविण्याशिवाय दुसरे काही अर्थ नाही - जोपर्यंत अन्यथा स्पष्टपणे निर्दिष्ट केलेले नाही - ग्राफिकल मोडमध्ये फाईल व्ह्यूअरकडून / होम / पेड्रो पाहताना दिसणार नाही.

आता आपण करावे लागेल लिनक्सला तिथेही दिसायला सांगा (/home/pedro/.bin) टर्मिनलवरून कार्यान्वित केलेल्या ऑर्डर.

$ PATH=$PATH;/home/pedro/.bin

अशाप्रकारे सिस्टम तेथे आमचे ऑर्डर शोधेल आम्ही सत्र बंद करेपर्यंत. ही संघटना कायम करण्यासाठी:

$ sudo nano /etc/environment

आणि आम्ही जोडतो

:/home/pedro/.bin

पथ ओळ च्या शेवटी, आपण समाविष्ट करत असलेल्या डिरेक्टरीच्या पत्त्याच्या आधी कोलन विसरणे फार महत्वाचे आहे, कारण ही जोडण्याची यंत्रणा आहे.

आमची पहिली चरण-दर-चरण स्क्रिप्ट

माझ्या बाबतीत अशी फाईल आम्ही तयार करतो.

$ touch ~/.bin/donde

आणि ते संपादित करण्यासाठी, आपण आपला पसंतीचा संपादक वापरू शकता किंवा या निर्देशाचे अनुसरण करू शकता:

$ gedit ~/.bin/donde &

आणि आम्ही पुढील सामग्री जोडा:

#!/usr/bin/env bash

if [ $# -lt 1 ];
then
    echo "Necesitas pasar un parámetro"
else
    whereis $1
fi

स्क्रिप्ट विश्लेषण

आमची पहिली कॉल लाईन «शेबॅंग# (#! / यूएसआर / बिन / एनव्ही बॅश) लिनक्सला कळवायला सांगा जेथे बॅश शेल स्थित आहे आणि बॅशच्या गरजेनुसार अंमलात आणले जाईल. ही खबरदारी हे सुनिश्चित करणे सोयीचे आहे आमच्या स्क्रिप्ट्स कोणत्याही स्थापनेवर कार्य करतात. आणखी एक शक्य शेबॅंग तो हसला:

#!/bin/bash

त्यांच्यातील फरक खूप विचित्र असू शकतो आणि मी त्यास स्पष्ट करतो. या शेवटच्या मध्ये मी आमच्या सिस्टममध्ये असे गृहित धरतो बॅश शेल / बिन / बॅश पत्त्यावर आहे. तथापि, जेथे मी स्क्रिप्टमध्ये प्रपोज करतो मला वाटते ते कोठे आहे हे मला ठाऊक नाही बॅश दुभाषे मी सिस्टमला त्याच्यासाठी तो पत्ता देण्यास सांगा.

तिसरी ओळ: तुम्ही बघू शकता, दुसरी ओळ if आहे. पात्रांना बॅश करण्यासाठी «$#« कमांड लाइनमधून आम्ही जात असलेल्या पॅरामीटर्सची संख्या समाविष्ट आहे. म्हणून, »if [$ # -lt 1]; शाब्दिक अर्थ "पॅरामीटर्सची संख्या 1 पेक्षा कमी असल्यास".

चौथी ओळ: मग (शब्दशः इंग्रजीमधून अनुवादित: नंतर), येथे असे सूचित केले जाते की पुढे काय होते जेव्हा अट मूल्यांकन केल्यास अंमलात आणले जाईल if खरे व्हा: दुसर्‍या शब्दांत, पॅरामीटर्सची संख्या 1 पेक्षा कमी आहे, म्हणजेच शून्य.

पाचवी ओळ: जर आम्ही आमची स्क्रिप्ट कोणत्याही पॅरामीटर्सविना कार्यान्वित केली तर आम्ही टर्मिनलमध्ये दर्शवितो «आपल्याला एक पॅरामीटर पास करणे आवश्यक आहे.

सहावी ओळ: असे दर्शविते की पुढील गोष्टी अंमलात आणल्या जातील जेव्हा आम्ही घोषित केलेली अट बरोबर नाही.

सातवी ओळ: से आज्ञा चालवा «कुठे आहे« आम्ही जशी उत्तीर्ण केली आहे त्या सामग्रीसह पहिले पॅरामीटर.

आठवी ओळ: सह «fiBlock ब्लॉक समाप्त झाल्याचे दर्शविते if.

आमच्या स्क्रिप्टची चाचणी घेत आहे

हे महत्वाचे आहे लेखन परवानग्या जोडा स्क्रिप्टवर:

$ chmod -x ~/.bin/donde

त्याशिवाय, "परवानगी नाकारली" त्रुटी दिसून येईल.. त्यानंतर आपण आपली स्क्रिप्ट चालवू शकतो.

$ donde php

हे आम्हाला php बायनरीज, त्यांच्या स्त्रोत फायली आणि मॅन पृष्ठे दर्शविते. तशा प्रकारे काहीतरी:

php: /usr/bin/php7.0 /usr/bin/php /usr/lib/php /etc/php 
/usr/share/php7.0-readline /usr/share/php7.0-json /usr/share/php7.0-opcache 
/usr/share/php7.0-common /usr/share/php /usr/share/man/man1/php.1.gz

पुन्हा टिपत आहे

  • आम्ही सक्षम एक आपली स्क्रिप्ट ठेवण्यासाठी ".bin" डिरेक्टरी.
  • आम्ही पुरवतो कमांड सर्चमध्ये ही डिरेक्टरी समाविष्ट करण्यासाठी लिनक्सला माहिती.
  • आम्ही आपली स्क्रिप्ट तयार करतो.
  • यातील फरक भिन्न शेबॅंग.
  • चा उपयोग meters # सह उत्तीर्ण पॅरामीटर्सची संख्या.
  • चा उपयोग पहिले पॅरामीटर फसवणे $1.

मी आशा करतो आणि आशा करतो की ही स्क्रिप्ट आपल्यासाठी उपयुक्त असेल.


आपली टिप्पणी द्या

आपला ई-मेल पत्ता प्रकाशित केला जाणार नाही. आवश्यक फील्ड चिन्हांकित केले आहेत *

*

*

  1. डेटा जबाबदार: मिगुएल Áन्गल गॅटन
  2. डेटाचा उद्देशः नियंत्रण स्पॅम, टिप्पणी व्यवस्थापन.
  3. कायदे: आपली संमती
  4. डेटा संप्रेषण: कायदेशीर बंधन वगळता डेटा तृतीय पक्षास कळविला जाणार नाही.
  5. डेटा संग्रहण: ओकेन्टस नेटवर्क (EU) द्वारा होस्ट केलेला डेटाबेस
  6. अधिकारः कोणत्याही वेळी आपण आपली माहिती मर्यादित, पुनर्प्राप्त आणि हटवू शकता.

  1.   Miguel म्हणाले

    खूप चांगले आणि चांगले वर्णन केले आहे, परंतु पॅरामीटर कशाचा संदर्भ घेतो?

    1.    पेड्रो रुईझ हिडाल्गो प्लेसहोल्डर प्रतिमा म्हणाले

      धन्यवाद मिगुएल!

      प्रोग्राम, फंक्शन किंवा सिस्टमला पुरविल्या जाणार्‍या सर्व पूरक माहिती मी मापदंडांद्वारे समजतो. हे अवजड असू शकते म्हणून, मी काही उदाहरणे देऊन तुझे उत्तर देतो.

      B.txt या फाईलवर a.txt ही फाईल कॉपी करण्यासाठी लिनक्स कमांडमधे आपण पुढील गोष्टी लिहू.

      p cp a.txt b.txt

      येथे सीपी प्रोग्रामला दोन पॅरामीटर्स प्राप्त आहेत जी दोन फाईल्सची नावे आहेत, पहिली (अस्तित्त्वात असणे आवश्यक आहे) a.txt आणि दुसरे b.txt.

      दुसरे उदाहरणः जर आपण कमांडसह कन्सोलवरुन प्रिंट पाठविले तर

      p एलपी फाइल.पीडीएफ

      या प्रकरणात "file.pdf" lp प्रोग्रामसाठी एक पॅरामीटर आहे.

      मी आशा करतो की मी तुमच्या शंकांचे समाधान केले आहे.

      कोट सह उत्तर द्या

  2.   Miguel म्हणाले

    माझ्या टिप्पण्या बाहेर येत नाहीत, ती मान कमी आहे, मी या मंचाकडे परत येत नाही.

    1.    पेड्रो रुईझ हिडाल्गो प्लेसहोल्डर प्रतिमा म्हणाले

      काय झाले हे मला माहिती नाही, कोणत्याही परिस्थितीत हे प्रकाशित केले गेले आहे.

      ग्रीटिंग्ज