Lumikha ng iyong sariling mga script gamit ang bash

Pag-aaral ng Linux

Hindi alintana ang pamamahagi ng Linux na ginagamit namin, ― walang duda na paborito ko ang Ubuntu― sa sandaling makagamit kami ng sistemang ito, tiyak na mga pangangailangan sa awtomatiko. Iyon ay upang sabihin: lumikha ng aming sariling utos na gumaganap ng ilang mga utos sa isang isinapersonal na paraan. Ang pangangailangan na ito ay maaaring sanhi ng ilang mga kadahilanan:

  • Pasimplehin ang syntax ng mga utos na karaniwang ginagawa namin.
  • Gumawa ng mga aksyon na sumasakop sa anumang kailangan na ay hindi paunang nakikita sa system pagpapatakbo.
  • Mga order ng pagkakasunud-sunod na assiduous ulitin namin.

Kahit na ang isang bash script ay maaaring patakbuhin sa / mula sa anumang direktoryo, ito ay karaniwang lumikha ng isang direktoryo upang ma-host ang mga script na ito. Sa aking kaso:

$ mkdir /home/pedro/.bin

Naniniwala ako dito direktoryo (nakatago sa pamamagitan ng pamumuno ng panahon sa harap ng pangalan) upang hawakan ang lahat ng mga script na ginagamit ko doon. Na ang pangalan ng direktoryo ay nakatago ay walang ibang kahulugan kaysa - maliban kung malinaw na tinukoy kung hindi man - ay hindi lilitaw kapag tumitingin / tahanan / pedro mula sa file viewer sa graphic mode.

Ngayon kailangan mo na ipaalam sa Linux na dapat din itong tumingin doon (/home/pedro/.bin) ang mga order na naisakatuparan mula sa terminal.

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

Sa ganitong paraan, hahanapin ng system ang aming mga order doon hanggang sa isara namin ang session. Upang gawing permanente ang asosasyong ito:

$ sudo nano /etc/environment

at nagdagdag kami

:/home/pedro/.bin

sa pagtatapos ng linya ng PATH, napakahalaga na huwag kalimutan ang colon bago ang address ng direktoryo na isinasama namin, dahil ito ang mekanismo ng pagdaragdag.

Ang aming unang sunud-sunod na script

Lumilikha kami ng aming file, tulad nito sa aking kaso:

$ touch ~/.bin/donde

At upang mai-edit ito, maaari mong gamitin ang iyong ginustong editor o sundin ang pahiwatig na ito:

$ gedit ~/.bin/donde &

At idinagdag namin ang sumusunod na nilalaman:

#!/usr/bin/env bash

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

Pagsusuri sa script

Ang aming unang linya ng pagtawag «shebang»(#! / Usr / bin / env bash) hilingin sa Linux na mag-ulat kung saan matatagpuan ang bash shell at na kung ano ang susunod ay isinasagawa ayon sa mga kinakailangan ng bash. Pag-iingat na ito maginhawa upang matiyak na gumagana ang aming mga script sa anumang pag-install. Isa pang posible shebang tumawa siya:

#!/bin/bash

Ang pagkakaiba sa pagitan ng mga ito ay maaaring maging napaka-freaky, at ipapaliwanag ko ito. Sa huling ito Ipinapalagay ko iyon sa aming system ang bash shell ay nasa / bin / bash address. Gayunpaman, kung saan imungkahi ko sa script Hindi ko alam kung nasaan ito ang bash interpreter. Hinihiling ko sa system na ibigay niya ang address na iyon.

Pangatlong linya: Tulad ng nakikita mo, ang pangalawang linya ay isang kung. Para ma-bash ang mga character «$#« naglalaman ng bilang ng mga parameter na ipinapasa namin mula sa linya ng utos. Samakatuwid, »kung [$ # -lt 1];» literal na nangangahulugang "kung ang bilang ng mga parameter ay mas mababa sa 1".

Pang-apat na linya: pagkatapos (literal na pagsasalin sa Ingles: kung gayon), dito ipinahiwatig na kung ano ang susunod ay papatayin kapag ang pagsusuri ng kundisyon if Maging totoo: sa madaling salita, ang bilang ng mga parameter ay mas mababa sa 1, iyon ay, zero.

Pang-limang linya: Kung naisasagawa namin ang aming script nang walang anumang mga parameter, ipapakita namin sa terminal «Kailangan mong pumasa sa isang parameter».

Pang-anim na linya: Isinasaad na ang sumusunod ay papatayin kapag ang kundisyon na idineklara namin ay hindi totoo.

Pang-pitong linya: Se patakbuhin ang utos «kung saan« sinabayan ng nilalaman na naipasa natin bilang unang parameter.

Ikawalong linya: na may «fi»Isinasaad na nagtatapos ang bloke if.

Pagsubok sa aming Script

Ito ay mahalaga magdagdag ng mga pahintulot sa pagsusulat sa script:

$ chmod -x ~/.bin/donde

Kung wala ito, lilitaw ang isang error na "tinanggihan ng pahintulot.". Pagkatapos nito, maaari naming patakbuhin ang aming script.

$ donde php

Dapat itong ipakita sa amin ang lokasyon ng mga php binary, ang kanilang mga source file, at mga pahina ng tao. Isang bagay na tulad nito:

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

Muling pag-recap

  • Pinapagana namin ang a direktoryo ng ".bin" upang mapaloob ang aming mga script.
  • Kami ay nagbibigay impormasyon sa Linux upang isama ang direktoryong ito sa mga paghahanap ng utos nito.
  • Lumilikha kami ng aming script.
  • Pagkakaiba sa pagitan ng naiiba shebang.
  • Paggamit ng bilang ng mga parameter na naipasa sa $ #.
  • Paggamit ng unang parameter sa $1.

Inaasahan ko at hangarin na ang script na ito ay kapaki-pakinabang para sa iyo.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   Miguel dijo

    Napakahusay at mahusay na ipinaliwanag, ngunit ano ang tinukoy ng isang parameter?

    1.    Larawan ng placeholder Pedro Ruiz Hidalgo dijo

      Salamat Miguel!

      Nauunawaan ko sa pamamagitan ng parameter ang lahat ng komplimentaryong impormasyon na ibinibigay sa isang programa, pag-andar o system. Dahil ito ay maaaring maging mahirap, hayaan mo akong sagutin ka ng ilang mga halimbawa.

      Sa utos ng linux na kopyahin ang file na a.txt sa file b.txt, isusulat namin ang sumusunod:

      $cp a.txt b.txt

      Ang programa ng cp dito ay tumatanggap ng dalawang mga parameter na kung saan ay ang mga pangalan ng dalawang mga file, ang una (dapat na mayroon) a.txt at ang pangalawang b.txt.

      Isa pang halimbawa: Kung magpapadala ka upang mag-print mula sa console kasama ang utos

      $ lp file.pdf

      Sa kasong ito "file.pdf" ay isang parameter para sa lp program.

      Sana nasiyahan ako sa iyong mga pagdududa.

      Regards

  2.   Miguel dijo

    Ang aking mga komento ay hindi lumabas, ito ay isang kawalan ng respeto, hindi ako babalik sa forum na ito.

    1.    Larawan ng placeholder Pedro Ruiz Hidalgo dijo

      Hindi ko alam kung ano ang nangyari, sa anumang kaso ang isang ito ay nai-publish.

      Pagbati.