Programavimas bash - 1 dalis

Nors mes paprastai jį naudojame administracinėms ar failų tvarkymo operacijoms, komfortas de Linux praplečia savo funkcionalumą toli už šio tikslo, leidžiant mums programuoti scenarijai Šis vadovas nėra skirtas kaip išsami „Bash“ programavimo nuoroda, o įvadas į pagrindines komandas ir struktūras, kurios leis mums išplėsti mūsų GNU / Linux sistemos galią.

Kas yra „scenarijus“?

Iš esmės mes sakome, kad tai yra failas, kuriame yra tam tikra programavimo kalba parašytas kodas, kurį sistema naudoja tam tikrai užduočiai atlikti. Nebūtina turėti išorinės įvesties ar grafinės sąsajos, tačiau ji turi sukelti apdorotų duomenų išvestį (net jei vartotojas jos nemato).

Basho vartojamą kalbą apibrėžia jo vertėjas ir sujungia kitų kriauklių, tokių kaip Korn Shell (ksh) arba C Shell (csh), sintaksę. Daugelis komandų, kurios paprastai naudojamos konsolėje, taip pat gali būti naudojamos scenarijuose, išskyrus tas, kurios griežtai susijusios su konkrečiu paskirstymu.

Scenarijaus struktūra

Norėdami pradėti, turime turėti teksto redaktorių ir norą programuoti. Failus, kuriuos išsaugome su .sh plėtiniu, konsolė gali vykdyti (arba interpretuoti), jei pirmoji eilutė yra tokia:

#! / bin / bash

Tai nurodo sistemai naudoti konsolę paleisti failą. Be to, simbolis # leidžia rašyti komentarus. Norėdami sukurti paprasčiausią pavyzdį, pridedame dar vieną eilutę, matomą šiame paveikslėlyje:

Echo komanda ekrane rodo pranešimą, šiuo atveju tipišką „Hello world!“ Jei išsaugosime ir vykdysime su konsole, pamatysime rezultatą.

Pagrindinės komandos

Šios komandos yra įprastos ir labai naudingos bet kokio tipo programoms. Mes paaiškiname, kad jų yra daug daugiau, tačiau kol kas aptarsime šiuos dalykus.

Pseudonimai: leidžia pakeisti žodžių eilutę trumpesnėmis, leidžiančiomis sumažinti kodą.

#create slapyvardį, vadinamą pagal #Downloads aplanko pseudonimo adresas per = '/ home / user / Downloads' # adresą. Kiekvieną kartą, kai norime jį naudoti, tiesiog turime paskambinti # nauju žodžiu # Norėdami sunaikinti tą pseudonimą, mes naudoti unalias unalias per

pertrauka: leidžia jums nedelsiant išeiti iš „for“, „,“, kol arba pasirinkite ciklą (mes išsamiau išnagrinėsime kilpas vėliau)

# Sukurkite kilpą, kuri priskirs skaičius nuo 1 iki 5 # kiekvienam skaitiklio „ciklo posūkiui“ 1 2 3 4 5 atlikite #Spausdiname dabartinę kintamojo #counter reikšmę, kurią analizuoja simbolis $ echo "$ counter" #Jei skaitiklio vertė lygi 3, jei [$ counter –eq 3], tada #Pertrauka išeina iš pertraukos ciklo

tęsti - Panašus į pertraukimą, išskyrus tai, kad jis nepaiso dabartinės kilpos ir eina į kitą.

# Sukurkite ciklą, kuris priskirs skaičius nuo 1 iki 5 # kiekvienam skaitiklio „ciklo posūkiui“ 1 2 3 4 5 atlikite #Jei skaitiklio vertė lygi 3, jei [$ counter –eq 3], tada # „Tęsti“ neleidžia analizuoti likusio dabartinio ciklo, pereinant prie kito rato, tai yra, # vertė 3 nebus atspausdinta. tęsti fi echo "$ counter" padaryta

deklaruoti: deklaruoja kintamuosius ir priskiria jiems reikšmes, kaip ir rinkiniai (jie veikia taip pat). Galime jį sujungti su kai kuriomis parinktimis: -i deklaruoja sveikus skaičius; -r tik skaitomiems kintamiesiems, kurių vertės pakeisti negalima; –A masyvams arba „masyvams“; -f funkcijoms; -x kintamiesiems, kuriuos galima „eksportuoti“ už paties scenarijaus aplinkos ribų.

deklaruoti –i num = 12 deklaruoti –x pi = 3.14

pagalba: parodo konkrečios komandos pagalbą.

darbai: rodo vykstančius procesus.

# Su –c parodome komandų pavadinimą, o –p # kiekvieno proceso pid (proceso ID). darbai -cp

leiskite: įvertinti aritmetinę išraišką

tegul a = 11 tegul a = a + 5 #Galiausiai atspausdiname a reikšmę, kuri yra 16 aido "11 + 5 = $ a"

vietinis: sukurkite vietinius kintamuosius, kurie turėtų būti naudojami paties scenarijaus funkcijose, kad būtų išvengta klaidų. Galite naudoti tas pačias funkcijas kaip ir deklaravimo komanda.

local v1 = "Tai yra vietinis kintamasis"

atsijungti: leidžia visiškai atsijungti nuo „Shell“; naudinga tais atvejais, kai mes dirbame su daugiau nei vienu apvalkalo langu, kuriame komanda exit leis vienu metu uždaryti tik vieną langą.

printf: leidžia spausdinti duomenis ir juos formatuoti. Jis turi daugybę galimybių, todėl paminėsime keletą.

#% f spausdinamas kaip slankusis skaičius, n naujam # eilutės printf "% fn" 5 5.000000 # & d leidžia perduoti dešimtainius skaičius kaip argumentus printf "Yra% d užsakymų, kurie vertinami% d doleriais. n" 20 500 Yra 20 užsakymų, vertinamų 500 dolerių.

skaityti: skaityti eilutę iš standartinio įvesties (pavyzdžiui, modulis naudojamas duomenims įkelti per klaviatūrą). Mes galime perduoti tokias parinktis kaip: -t, kad skaitymo laikas būtų ribotas; -a taip, kad kiekvienas žodis būtų priskirtas aname masyvo pozicijai; -d naudoti skyriklį, kuris bus parašytas eilutės pabaigoje; tarp kitų.

echo "Įveskite savo vardą ir paspauskite ENTER" #Skaitykite kintamojo vardą skaitykite vardą echo "Jūsų vardas yra $ name"

type: apibūdina komandą ir jos elgesį. Gali būti naudinga sužinoti kiekvienos komandos duomenų apibrėžimus.

type –a '[' #type mums sako, kad [yra „Shell“ įmontuota komanda [yra „Shell“ įmontuota # -a leidžia rasti katalogus, kuriuose yra # vykdomoji programa su užrašytu vardu. [yra / usr / bin / [

ulimit: riboja tam tikrų sistemos išteklių prieigą ir naudojimą procesams, idealiai tinka programoms, leidžiančioms atlikti administracinius pakeitimus arba skirtoms skirtingų tipų vartotojams. Nustatydami ribą, mes parašome skaičių, nurodantį ribos kilobaitus.

#Matome mūsų dabartines ribas ulimit –a # -f leidžia apriboti vartotojus, kad jie negalėtų # kurti didesnių nei 512000 Kb (500 # MB) failų. Ulimit –f 512000 # -v riboja virtualiosios proceso atmintį. ulimit –v 512000

palaukite: palaukite, kol bus tęsiamas tam tikras procesas ar darbas.

# Scenarijus laukia, kol bus vykdomas pid # 2585 procesas

palauk 2585

Kitos naudingos komandos, kurias galime pridėti prie scenarijų, žymimos simboliais.

!!: vėl paleiskite paskutinę komandą

! wer: vykdo paskutinę komandą, kuri prasidėjo posakiu „wer“.

'==', '! =', '>', '<', '> =' ir '<=': reliaciniai operatoriai.

|: OR operatorius paprastai jungė du įprastus posakius.

: escape komanda, leidžianti formatuoti išraiškas. Pvz .: a - garsiniam įspėjimui, n - naujai eilutei, b - grįžtamam klavišui ir kt.

Ačiū Juanui Carlosui Ortizui!

Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   Vidutiniškai sunku sakė

    Puiku! Bet kokiu atveju 2 komentarai: „Ubuntu“ žymos yra per daug, nes ji apibendrina tai, kas yra bendrai. Ir jei šie vadovėliai ir toliau tobulės, būtų gerai, jei jie būtų susieti vienas su kitu ....
    Be to, šis žingsnis yra įdomus!

  2.   Panaudokime „Linux“ sakė

    Geras indėlis! Puiku!

  3.   Giovanni escobar sosa sakė

    Trūksta tik nuorodų tiems, kurie nori daugiau sužinoti apie šį klausimą. Kai kuriuos gerus, nors ne taip lengva rasti mūsų šalyse
    - Praktinis „Linux“ komandų, redaktorių ir „Shell“ programavimo vadovas, Markas Sobellas (8 skyrius)
    - „Pro Bash“ programavimas, Chrisas FA Johnsonas (nors tai yra tiems, kurie turi kitų nuorodų ar šiek tiek daugiau žinių).

    Geras straipsnis.

  4.   Panaudokime „Linux“ sakė

    Gera data! Ačiū!

  5.   Patricio Dorantes Jamarne sakė

    : @ Funkcija "prisijungti kaip" ištrynė mano ankstesnį komentarą, todėl aš jį apibendrinsiu toliau:
    darbai -cp
    bash: darbai: -c: netinkama parinktis
    darbai: naudojimas: darbai [-lnprs] [jobspec ...] arba job -x komanda [args]

    -eq -gt -lt nepriima dešimtainių kintamųjų, tarp forumo ir forumo atradau, kad bc yra geras sąjungininkas:
    jei [`aidas 9.999> 10 | bc`-ekv. 1]; tada
    echo "9.999 yra didesnis nei 10, įsitikinkite, kad jūsų procesorius vis dar veikia"
    kitas
    echo «9.999 nėra didesnis nei 10, viskas veikia normaliai
    fi

  6.   Ne iš Brooklyn sakė

    Šiame įraše labai gerai apibendrinami visi „bash“ scenarijų bendrybės:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    Šioje svetainėje rasite daug klausimų ir atsakymų apie bash ypatumus:
    http://unix.stackexchange.com/questions/tagged/bash

    Čia yra keletas labai šaunių scenarijų, o, jų galite išmokti perskaitę kitų scenarijus:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   Ne iš Brooklyn sakė

    Jūs teisus su tuo, ką sakote, išskyrus basą. Kiekvienoje sistemoje, kurią mačiau, yra bash / bin / bash.

    Bet pitonui, perlui, rubinui ir kt., Tai gerai naudoti. Aš darau

  8.   Guille sakė

    Taip sutapo, kad kolegijoje mes naudojame „bash“ scenarijus, todėl duomenų yra 10, labai gerai!

  9.   aleksas vi sakė

    būtų gera atsisiųsti pdf versiją !! 😀

  10.   Marco Antonio De Fuentesas sakė

    Labai gera svetainė. Pagaliau radau ką nors naudingo. Ačiū.