Krijoni skriptet tuaja duke përdorur bash

Mësoni Linux

Pavarësisht nga shpërndarja Linux që po përdorim, pa dyshim që i preferuari im është Ubuntu― sa më shpejt që të futemi në përdorimin e këtij sistemi, nevojat e automatizimit. Kjo do të thotë: krijoni tonën komandat vetanake që kryejnë komanda të caktuara në një mënyrë të personalizuar. Kjo nevojë mund të jetë për shkak të shkaqeve të caktuara:

  • Thjeshtoni sintaksën të komandave që zakonisht ekzekutojmë.
  • Merrni veprime që mbulojnë ndonjë nevojë që nuk është parashikuar në sistem operacionale.
  • Urdhrat e sekuencës që ne me përsëritje e përsërisim.

Edhe pse një skenar bash mund të ekzekutohet në / nga çdo drejtori, zakonisht është krijoni një direktori për të pritur këto skripta. Në rastin tim:

$ mkdir /home/pedro/.bin

Unë e besoj këtë direktoria (e fshehur duke udhëhequr periudhën para emrit) për të mbajtur të gjitha skenarët që përdor atje. Që emri i drejtorisë është i fshehur nuk ka kuptim tjetër përveç - përveç nëse përcaktohet shprehimisht ndryshe - nuk do të shfaqet kur shikoni / shtëpi / pedro nga shikuesi i skedarit në modalitetin grafik.

Tani ju keni për të informoni Linux se duhet të shikojë edhe atje (/home/pedro/.bin) urdhrat që ekzekutohen nga terminali.

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

Në këtë mënyrë sistemi do të kërkojë porositë tona atje derisa ta mbyllim seancën. Për ta bërë këtë shoqatë të përhershme:

$ sudo nano /etc/environment

dhe shtojmë

:/home/pedro/.bin

në fund të linjës PATH, është shumë e rëndësishme të mos harrohet zorra e trashë para adresës së direktorisë që po përfshijmë, pasi që ky është mekanizmi i mbledhjes.

Skenari ynë i parë hap pas hapi

Ne krijojmë dosjen tonë, si kjo në rastin tim:

$ touch ~/.bin/donde

Dhe për ta redaktuar atë, mund të përdorni redaktuesin tuaj të preferuar ose të ndiqni këtë tregues:

$ gedit ~/.bin/donde &

Dhe ne shtojmë përmbajtjen e mëposhtme:

#!/usr/bin/env bash

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

Analiza e skenarit

Linja jonë e parë e thirrjes «shebang»(#! / Usr / bin / env bash) kërkoni Linux të raportojë ku ndodhet guaska bash dhe se ajo që vjen më pas ekzekutohet sipas kërkesave të bash. Kjo masë paraprake është i përshtatshëm për t'u siguruar që skenarët tanë punojnë në çdo instalim. Një tjetër e mundur shebang ai qeshi:

#!/bin/bash

Dallimi midis tyre mund të jetë shumë i çuditshëm, dhe unë do ta shpjegoj atë. Në këtë të fundit Supozoj se në sistemin tonë guaska e bashit është në adresën / bin / bash. Sidoqoftë, aty ku unë propozoj në skenar Them se nuk e di se ku është interpretuesi bash. Unë i kërkoj sistemit që ai të japë atë adresë.

Rreshti i tretë: Siç mund ta shihni, rreshti i dytë është një. Për bash personazhet «$#« përmbajnë numrin e parametrave që po kalojmë nga rreshti i komandës. Prandaj, »nëse [$ # -lt 1];» fjalë për fjalë do të thotë "nëse numri i parametrave është më i vogël se 1".

Rreshti i katërt: Pastaj (përkthimi fjalë për fjalë nga anglishtja: atëherë), këtu tregohet se ajo që vjen më pas do të ekzekutohet kur vlerësimi i gjendjes if të jetë e vërtetë: me fjalë të tjera, numri i parametrave është më i vogël se 1, domethënë zero.

Rreshti i pestë: Nëse ekzekutojmë skriptin tonë pa ndonjë parametër, ne do të tregojmë në terminalin «Ju duhet të kaloni një parametër».

Linja e gjashtë: Tregon se ajo që vijon do të ekzekutohet kur gjendja që kemi deklaruar nuk është e vërtetë.

Linja e shtatë: Se ekzekuto komandën «ku është« shoqëruar me përmbajtjen që kemi kaluar si parametri i parë.

Linja e tetë: me «fi»Tregon që blloku mbaron if.

Testimi i Skenarit tonë

Është e rëndësishme shtoni lejet e shkrimit te skenari:

$ chmod -x ~/.bin/donde

Pa këtë, do të shfaqej një gabim "leje e refuzuar".. Pas kësaj, ne mund të ekzekutojmë skenarin tonë.

$ donde php

Duhet të na tregojë vendndodhjen e binareve php, skedarët burimor të tyre dhe faqet man. Diçka e tillë:

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

Recapping

  • Ne mundësojmë një direktoria ".bin" për të vendosur skriptet tona.
  • Ne mundesojme informacion në Linux për të përfshirë këtë direktori në kërkimet e tij komanduese.
  • Ne krijojmë skenarin tonë.
  • Diferenca midis të ndryshme shebang.
  • Përdorimi i numri i parametrave të kaluar me $ #.
  • Përdorimi i parametri i parë me $1.

Shpresoj dhe uroj që ky skenar të jetë i dobishëm për ju.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   Miguel dijo

    Shumë e mirë dhe e shpjeguar mirë, por çfarë i referohet një parametri?

    1.    Imazhi i mbajtësit të vendit Pedro Ruiz Hidalgo dijo

      Faleminderit Miguel!

      Unë e kuptoj me parametër të gjithë informacionin plotësues që i jepet një programi, funksioni ose sistemi. Meqenëse kjo mund të jetë e rëndë, më lejoni t'ju përgjigjem me disa shembuj.

      Në komandën linux për të kopjuar skedarin a.txt në skedarin b.txt, ne do të shkruanim sa vijon:

      $cp a.txt b.txt

      Programi cp këtu merr dy parametra që janë emrat e dy skedarëve, i pari (duhet të ekzistojë) a.txt dhe i dyti b.txt.

      Një shembull tjetër: Nëse dërgoni të shtypni nga tastiera me komandën

      skedari $ lp.pdf

      Në këtë rast "file.pdf" është një parametër për programin lp.

      Shpresoj se i kam kënaqur dyshimet tuaja.

      të fala

  2.   Miguel dijo

    Komentet e mia nuk dalin, është mungesë respekti, nuk kthehem në këtë forum.

    1.    Imazhi i mbajtësit të vendit Pedro Ruiz Hidalgo dijo

      Unë nuk e di se çfarë ka ndodhur, në çdo rast kjo është botuar.

      Përshëndetje.