Ne glede na distribucijo Linuxa, ki jo uporabljamo, "nedvomno je moj najljubši Ubuntu", takoj ko začnemo uporabljati ta sistem, nekateri potrebe avtomatizacije. Se pravi: ustvarite našo lastni ukazi ki izvajajo določene ukaze na personaliziran način. Ta potreba je lahko posledica nekaterih vzrokov:
- Poenostavite skladnjo ukazov, ki jih običajno izvajamo.
- Ukrepajte, ki zajema katero koli potrebe, ki v sistemu ni predvidena operativni.
- Naročila v zaporedju ki ga pridno ponavljamo.
Čeprav je skript bash mogoče zagnati v / iz katerega koli imenika, je običajno ustvari imenik za gostovanje teh skriptov. V mojem primeru:
$ mkdir /home/pedro/.bin
Verjamem v to imenik (skrit z vodenjem pike pred imenom) da imam tam vse skripte, ki jih uporabljam. To, da je ime imenika skrito, nima drugega pomena, razen če ni izrecno določeno drugače, ne bo prikazan med ogledom / domov / pedro iz pregledovalnika datotek v grafičnem načinu.
Zdaj moraš obvestite Linux, da bi moral tudi tam iskati (/home/pedro/.bin) naročila, ki se izvajajo s terminala.
$ PATH=$PATH;/home/pedro/.bin
Na ta način bo sistem tam iskal naša naročila dokler ne zaključimo seje. Da to združenje postane trajno:
$ sudo nano /etc/environment
in dodajamo
:/home/pedro/.bin
na koncu vrstice PATH je zelo pomembno, da ne pozabite dvopičja pred naslovom imenika, ki ga vključujemo, saj to je mehanizem dodajanja.
Naš prvi skript po korakih
Ustvarimo svojo datoteko, tako kot v tem primeru:
$ touch ~/.bin/donde
Če ga želite urediti, lahko uporabite želeni urejevalnik ali sledite tem navodilom:
$ gedit ~/.bin/donde &
In dodamo naslednjo vsebino:
#!/usr/bin/env bash if [ $# -lt 1 ]; then echo "Necesitas pasar un parámetro" else whereis $1 fi
Analiza skript
Naša prva klicna linija «shebang»(#! / Usr / bin / env bash) prosite Linux, da poroča kje se nahaja lupina bash in da se tisto, kar sledi, izvede v skladu z zahtevami basha. Ta previdnostni ukrep priročno je zagotoviti, da naši skripti delujejo na kateri koli namestitvi. Druga možna shebang se je zasmejal:
#!/bin/bash
Razlika med njima je lahko zelo čudna in to bom razložil. V tej zadnji Predvidevam, da v našem sistemu lupina bash je na naslovu / bin / bash. Vendar, kjer predlagam v scenariju Mislim, da ne vem, kje je bash tolmač. Prosim sistem, naj mu navede ta naslov.
Tretja vrstica: Kot vidite, je druga vrstica if. Za bash znakov «$#« vsebuje število parametrov, ki jih prenašamo iz ukazne vrstice. Zato »if [$ # -lt 1];» dobesedno pomeni "če je število parametrov manjše od 1".
Četrta vrstica: Potem (v dobesednem prevodu iz angleščine: potem), tukaj je navedeno, kaj sledi bo izveden, ko bo ocena stanja if Bodi resničen: z drugimi besedami, število parametrov je manjše od 1, to je nič.
Peta vrstica: Če izvajamo skript brez kakršnih koli parametrov, bomo v terminalu prikazali «Parameter morate predati».
Šesta vrstica: Označuje, da se bo izvedlo naslednje kadar pogoj, ki smo ga razglasili, ne drži.
Sedma vrstica: Se zaženite ukaz «kje je« skupaj z vsebino, ki smo jo podali prvi parameter.
Osma vrstica: z «fi»Označuje, da se blok konča if.
Testiranje našega skripta
Pomembno je, dodaj dovoljenja za pisanje na skript:
$ chmod -x ~/.bin/donde
Brez tega bi se pojavila napaka "dovoljenje zavrnjeno".. Po tem lahko zaženemo svoj skript.
$ donde php
Prikazati nam mora lokacijo php binarnih datotek, njihove izvorne datoteke in strani z informacijami. Nekaj takega:
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
Povzetek
- Omogočamo a ".bin" za shranjevanje naših skriptov.
- Zagotavljamo informacije za Linux, da ta imenik vključi v svoja iskanja po ukazih.
- Ustvarimo naš scenarij.
- Razlika med drugačen shebang.
- Uporaba število parametrov, prenesenih s $ #.
- Uporaba prvi parameter z $1.
Upam in želim, da je ta scenarij koristen za vas.
Zelo dobro in dobro razloženo, toda na kaj se nanaša parameter?
Hvala Miguel!
Pod parametrom razumem vse dopolnilne informacije, ki so posredovane programu, funkciji ali sistemu. Ker je to lahko okorno, naj vam odgovorim z nekaj primeri.
V ukaz linux za kopiranje datoteke a.txt v datoteko b.txt bi zapisali naslednje:
$cp a.txt b.txt
Tukaj program cp prejme dva parametra, ki sta imeni dveh datotek, prve (mora obstajati) a.txt in druge b.txt.
Drug primer: če pošljete v ukaz za tiskanje iz konzole
$ lp datoteka.pdf
V tem primeru je "file.pdf" parameter za lp program.
Upam, da sem zadovoljila vaše dvome.
pozdrav
Moji komentarji se ne pojavijo, gre za pomanjkanje spoštovanja, na ta forum se ne vrnem več.
Ne vem, kaj se je zgodilo, v vsakem primeru je bilo objavljeno.
Lep pozdrav.