Bez obzira na Linux distribuciju koju koristimo, ―ne sumnjam da mi je najdraži Ubuntu― čim uđemo u upotrebu ovog sustava, izvjesni potrebe automatizacije. To će reći: stvorite naše vlastite naredbe koji izvršavaju određene naredbe na personalizirani način. Ta potreba može biti posljedica određenih uzroka:
- Pojednostavite sintaksu naredbi koje obično izvršavamo.
- Poduzmite radnje koje pokrivaju bilo koju potreba koja nije predviđena u sustavu operativni.
- Redoslijed redoslijeda koje marljivo ponavljamo.
Iako se bash skripta može pokrenuti u / iz bilo kojeg direktorija, to je obično stvoriti direktorij za hostiranje ovih skripti. U mom slučaju:
$ mkdir /home/pedro/.bin
Vjerujem u ovo direktorij (skriven vođenjem točke ispred imena) da tamo držim sve skripte koje koristim. Da je ime direktorija skriveno, nema drugo značenje osim - ako nije izričito navedeno drugačije - neće se pojaviti prilikom gledanja / 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 će način sustav 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 zbrajanja.
Naša prva skripta korak po korak
Izrađujemo svoju datoteku, kao u ovom slučaju u ovom slučaju:
$ touch ~/.bin/donde
A da biste ga uredili, možete upotrijebiti željeni uređivač ili slijediti ovu naznaku:
$ 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 «šajkača»(#! / Usr / bin / env bash) zamolite Linux da izvijesti gdje se nalazi bashova ljuska i da se ono što slijedi izvršava prema bashovim zahtjevima. Ova mjera opreza prikladno je osigurati da naše skripte rade na bilo kojoj instalaciji. Još jedna moguća šajkača on se smijao:
#!/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 sustavu bash ljuska nalazi se na / bin / bash adresi. Međutim, tamo gdje predlažem u scenariju Valjda ne znam gdje je bash tumač. Molim sustav da on navede tu adresu.
Treći redak: Kao što vidite, drugi redak je if. Za bash likove «$#« sadrže broj parametara koje prenosimo iz naredbenog retka. Stoga, »if [$ # -lt 1];» doslovno znači "ako je broj parametara manji od 1".
Četvrti redak: Tada (doslovno prijevod s engleskog: tada), ovdje je naznačeno da ono što slijedi izvršit će se kada se izvrši procjena stanja if budi iskren: drugim riječima, broj parametara je manji od 1, odnosno nula.
Peti redak: Ako izvedemo našu skriptu bez ikakvih parametara, u terminalu ćemo prikazati «Trebate proslijediti parametar».
Šesti redak: Označava da će se izvršiti ono što slijedi kada uvjet koji smo proglasili nije istinit.
Sedmi red: Se pokrenite naredbu «gdje je« popraćen sadržajem koji smo proslijedili prvi parametar.
Osmi redak: sa «fi»Označava da blok završava if.
Testiranje naše skripte
To je važno dodaj dozvole za pisanje na skriptu:
$ chmod -x ~/.bin/donde
Bez toga bi se pojavila pogreška "odbijeno odobrenje".. Nakon toga možemo pokrenuti našu skriptu.
$ donde php
Trebao bi nam pokazati mjesto php binarnih datoteka, njihove izvorne datoteke i stranice s uputama. Nešto kao to:
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
Rekapitiranje
- Omogućujemo a direktorij ".bin" za smještaj naših skripti.
- Mi opskrbljujemo informacije Linuxu kako bi ovaj direktorij uključio u svoja pretraživanja naredbi.
- Mi kreiramo našu skriptu.
- Razlika između drugačiji šajkača.
- Korištenje broj parametara proslijeđenih s $ #.
- Korištenje prvi parametar s $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 sustavu. Budući da ovo može biti glomazno, dopustiću vam da vam odgovorim s nekoliko primjera.
U naredbu linux za kopiranje datoteke a.txt u datoteku b.txt napisali bismo sljedeće:
$cp a.txt b.txt
Ovdje cp program prima dva parametra koji su imena dviju datoteka, prva (mora postojati) a.txt i druga b.txt.
Drugi primjer: Ako naredbu šaljete za ispis s konzole
$ lp datoteka.pdf
U ovom je slučaju "file.pdf" parametar za lp program.
Nadam se da sam udovoljio vašim sumnjama.
pozdravi
Moji komentari ne izlaze, nedostatak je poštovanja, ne vraćam se ponovo na ovaj forum.
Ne znam što se dogodilo, u svakom je slučaju objavljeno.
Pozdrav.