बैश का उपयोग करके अपनी खुद की स्क्रिप्ट बनाएं

लिनक्स सीखना

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

  • वाक्य रचना को सरल कीजिए उन आज्ञाओं का, जिन्हें हम आमतौर पर निष्पादित करते हैं।
  • ऐसी कार्रवाई करें जो किसी को भी कवर करती हैं जरूरत है कि प्रणाली में पूर्वाभास नहीं है परिचालन।
  • अनुक्रम आदेश कि हम बार-बार दोहराते हैं।

हालाँकि किसी भी डायरेक्टरी से बैश स्क्रिप्ट को चलाया जा सकता है, यह आमतौर पर होता है इन लिपियों को होस्ट करने के लिए एक निर्देशिका बनाएँ। मेरे मामले में:

$ 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

लिपि विश्लेषण

हमारी पहली कॉल लाइन «कुटिया»(#! / Usr / बिन / env बैश) लिनक्स को रिपोर्ट करने के लिए कहें बैश शेल कहां स्थित है और बैश की आवश्यकताओं के अनुसार इस प्रकार का निष्पादन किया जाता है। यह एहतियात यह सुनिश्चित करना सुविधाजनक है कि हमारी स्क्रिप्ट किसी भी स्थापना पर काम करती हैं। एक और संभव कुटिया वे हंसे:

#!/bin/bash

उनके बीच का अंतर बहुत अजीब हो सकता है, और मैं इसे समझाऊंगा। इस आखिरी में मुझे लगता है कि हमारे सिस्टम में बैश शेल / बिन / बैश पते पर है। हालांकि, जहां मैंने स्क्रिप्ट में प्रपोज किया था मुझे लगता है मुझे नहीं पता कि यह कहां है बैश दुभाषिया। मैं उस पते को प्रदान करने के लिए उसके लिए प्रणाली पूछता हूं.

तीसरी पंक्ति: जैसा कि आप देख सकते हैं, दूसरी पंक्ति एक है। पात्रों को कोसने के लिए «$#« उन मापदंडों की संख्या समाहित करें जिन्हें हम कमांड लाइन से पास कर रहे हैं। इसलिए, »अगर [$ #-टाइप 1] ;; शाब्दिक अर्थ है "यदि मापदंडों की संख्या 1 से कम है".

चौथी पंक्ति: फिर (अंग्रेजी से शाब्दिक अनुवाद: तब), यहाँ यह इंगित किया गया है कि आगे क्या आता है जब हालत मूल्यांकन किया जाएगा if सच हो: दूसरे शब्दों में, मापदंडों की संख्या 1 से कम है, अर्थात शून्य है।

पांचवीं पंक्ति: यदि हम बिना किसी पैरामीटर के अपनी स्क्रिप्ट निष्पादित करते हैं, तो हम टर्मिनल में दिखाएंगे «आपको एक पैरामीटर पास करने की आवश्यकता है»।

छठी पंक्ति: इंगित करता है कि निम्न प्रकार निष्पादित किया जाएगा जब हमने जो शर्त घोषित की है वह सच नहीं है.

सातवीं पंक्ति: से कमांड चलाएं «कहां है« उस सामग्री के साथ जिसे हमने पास किया है पहला पैरामीटर.

आठवीं पंक्ति: «के साथfi»इंगित करता है कि ब्लॉक समाप्त होता है 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" हमारे लिपियों घर.
  • हम देते हैं इस निर्देशिका को अपने कमांड खोजों में शामिल करने के लिए लिनक्स को सूचना.
  • हम अपनी स्क्रिप्ट बनाते हैं।
  • के बीच अंतर विभिन्न कुटिया.
  • का उपयोग $ # के साथ पारित मापदंडों की संख्या.
  • का उपयोग पहला पैरामीटर साथ $1.

मैं आशा करता हूं और चाहता हूं कि यह स्क्रिप्ट आपके लिए उपयोगी हो।


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

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

*

*

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

  1.   मिगुएल कहा

    बहुत अच्छा और अच्छी तरह से समझाया गया है, लेकिन एक पैरामीटर क्या संदर्भित करता है?

    1.    पेड्रो रुइज़ हिडाल्गो प्लेसहोल्डर छवि कहा

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

      मैं पैरामीटर द्वारा सभी पूरक जानकारी को समझता हूं जो एक कार्यक्रम, फ़ंक्शन या सिस्टम को आपूर्ति की जाती है। जैसा कि यह बोझिल हो सकता है, मैं आपको कुछ उदाहरणों के साथ जवाब देता हूं।

      Linux कमांड में फाइल a.txt को फाइल b.txt पर कॉपी करने के लिए, हम निम्नलिखित लिखेंगे:

      $ c। axt। bxt

      यहाँ cp प्रोग्राम को दो पैरामीटर मिलते हैं जो दो फाइलों के नाम हैं, पहला (मौजूद होना चाहिए) a.txt और दूसरा b.txt।

      एक और उदाहरण: यदि आप कंसोल से कमांड के साथ प्रिंट करने के लिए भेजते हैं

      $ lp file.pdf

      इस स्थिति में "file.pdf" lp प्रोग्राम का एक पैरामीटर है।

      मुझे आशा है कि मैंने आपके संदेह को संतुष्ट किया है।

      सादर

  2.   मिगुएल कहा

    मेरी टिप्पणियां बाहर नहीं आती हैं, यह सम्मान की कमी है, मैं इस मंच पर दोबारा नहीं लौटता।

    1.    पेड्रो रुइज़ हिडाल्गो प्लेसहोल्डर छवि कहा

      मुझे नहीं पता कि क्या हुआ है, किसी भी मामले में यह प्रकाशित किया गया है।

      नमस्ते.