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.
Shumë e mirë dhe e shpjeguar mirë, por çfarë i referohet një parametri?
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
Komentet e mia nuk dalin, është mungesë respekti, nuk kthehem në këtë forum.
Unë nuk e di se çfarë ka ndodhur, në çdo rast kjo është botuar.
Përshëndetje.