Bez obzira na Linux distribuciju koju koristimo, „ne sumnjam da mi je najdraži Ubuntu― čim uđemo u upotrebu ovog sistema, izvjesni potrebe automatizacije. To će reći: stvorite naše vlastite naredbe koji izvršavaju određene naredbe na personalizirani način. Ova potreba može biti posljedica određenih uzroka:
- Pojednostavite sintaksu naredbi koje obično izvršavamo.
- Poduzmite radnje koje pokrivaju bilo koje potreba koja nije predviđena u sistemu operativni.
- Redoslijed redoslijeda što marljivo ponavljamo.
Iako se bash skripta može pokrenuti u / iz bilo kojeg direktorija, to je obično kreirajte direktorij za hostiranje ovih skripti. U mom slučaju:
$ mkdir /home/pedro/.bin
Ja vjerujem u ovo direktorij (skriven vodećom tačkom ispred imena) da tamo držim sve skripte koje koristim. To što je ime direktorija skriveno nema drugo značenje osim - osim ako nije izričito navedeno drugačije - neće se pojaviti prilikom pregleda / home / pedro iz preglednika datoteka u grafičkom načinu.
Sad moraš obavijestite Linux da bi i tamo trebao potražiti (/home/pedro/.bin) nalozi koji se izvršavaju s terminala.
$ PATH=$PATH;/home/pedro/.bin
Na taj način, sistem će tamo tražiti naše narudžbe dok ne zatvorimo sesiju. Da ovo udruženje postane trajno:
$ sudo nano /etc/environment
i dodajemo
:/home/pedro/.bin
na kraju retka PATH, vrlo je važno ne zaboraviti dvotačku prije adrese direktorija koji uključujemo, jer ovo je mehanizam sabiranja.
Naš prvi korak po korak skripta
Mi kreiramo našu datoteku, poput ove u mom slučaju:
$ touch ~/.bin/donde
A da biste ga uredili, možete koristiti željeni uređivač ili slijediti ovu indikaciju:
$ gedit ~/.bin/donde &
I dodajemo sljedeći sadržaj:
#!/usr/bin/env bash if [ $# -lt 1 ]; then echo "Necesitas pasar un parámetro" else whereis $1 fi
Analiza skripte
Naša prva linija poziva «shebang»(#! / Usr / bin / env bash) zamolite Linux da izvještava gdje se nalazi bash školjka i da se ono što slijedi izvršava prema bashovim zahtjevima. Ova predostrožnost zgodno je to osigurati naše skripte rade na bilo kojoj instalaciji. Još jedno moguće shebang nasmijao se:
#!/bin/bash
Razlika između njih može biti vrlo zastrašujuća i objasnit ću vam. U ovom posljednjem Pretpostavljam da je to u našem sistemu bash ljuska je na / bin / bash adresi. Međutim, tamo gdje predlažem u scenariju Pretpostavljam da ne znam gdje je bash tumač. Molim sistem da on navede tu adresu.
Treći red: Kao što vidite, drugi redak je if. Za bash likove «$#« sadrže broj parametara koje prenosimo iz naredbenog retka. Prema tome, »if [$ # -lt 1];» doslovno znači "ako je broj parametara manji od 1".
Četvrti red: onda (doslovno prijevod sa engleskog: tada), ovdje je naznačeno da slijedi ono što slijedi izvršit će se kada se izvrši procjena stanja if biti istina: drugim riječima, broj parametara je manji od 1, odnosno nula.
Peti redak: Ako našu skriptu izvršimo bez ikakvih parametara, u terminalu ćemo prikazati «Trebate proslijediti parametar».
Šesti red: Označava da će se izvršiti ono što slijedi kada uslov koji smo proglasili nije istinit.
Sedmi red: Se pokrenite naredbu «gdje je« popraćen sadržajem koji smo proslijedili prvi parametar.
Osmi red: sa «fi»Označava da se blok završava if.
Testiranje naše skripte
Važno je dodajte dozvole za pisanje na skriptu:
$ chmod -x ~/.bin/donde
Bez toga bi se pojavila pogreška "odbijena dozvola".. Nakon toga možemo pokrenuti našu skriptu.
$ donde php
Trebao bi nam pokazati mjesto php binarnih datoteka, njihove izvorne datoteke i upute. Nešto slično tome:
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
- Omogućavamo a direktorij ".bin" za smještaj naših skripti.
- Mi pružamo informacije za Linux kako bi ovaj direktorij uključio u svoja pretraživanja naredbi.
- Mi kreiramo našu skriptu.
- Razlika između različiti shebang.
- Korištenje broj parametara prosljeđenih sa $ #.
- Korištenje prvi parametar con $1.
Nadam se i želim da vam je ova skripta korisna.
Vrlo dobro i dobro objašnjeno, ali na što se odnosi parametar?
Hvala Miguel!
Pod parametrom razumijem sve komplementarne informacije koje se dostavljaju programu, funkciji ili sistemu. Kako ovo može biti glomazno, dopustiću vam da vam odgovorim s nekoliko primjera.
U linux naredbi za kopiranje datoteke a.txt u datoteku b.txt napisali bismo sljedeće:
$cp a.txt b.txt
Ovdje cp program prima dva parametra koja su imena dviju datoteka, prve (mora postojati) a.txt i druge b.txt.
Još jedan primjer: Ako naredbu šaljete za ispis iz konzole
$ lp datoteka.pdf
U ovom slučaju "file.pdf" je parametar za lp program.
Nadam se da sam udovoljio vašim sumnjama.
Saludos
Moji komentari ne izlaze, nedostatak je poštovanja, ne vraćam se ponovo na ovaj forum.
Ne znam šta se dogodilo, u svakom slučaju je objavljeno.
Pozdrav.