Programare în bash - partea 1

Deși îl folosim în general pentru operațiuni administrative sau de gestionare a fișierelor, Console de Linux își extinde funcționalitatea cu mult dincolo de acest scop, permițându-ne să programăm script-uri Acest ghid nu este destinat să fie o referință completă la programarea Bash, ci mai degrabă o introducere la comenzile și structurile de bază, care ne vor permite să extindem puterea sistemului nostru GNU / Linux.

Ce este un „Script”?

Practic spunem că este un fișier care conține cod scris într-un anumit limbaj de programare pe care sistemul îl folosește pentru o anumită sarcină. Nu trebuie să aibă o intrare externă sau o interfață grafică, dar trebuie să provoace o ieșire a datelor procesate (chiar dacă utilizatorul nu le vede).

Limbajul folosit de Bash este definit de propriul interpret și combină sintaxa altor Shells, cum ar fi Shell Korn (ksh) sau Shell C (csh). Multe dintre comenzile care sunt utilizate de obicei în consolă pot fi folosite și în scripturi, cu excepția celor care se referă strict la o anumită distribuție.

Structura unui script

Pentru început, trebuie să avem un editor de text și dorința de a programa. Fișierele pe care le salvăm cu o extensie .sh pot fi executate (sau interpretate) de consolă, atâta timp cât prima linie este următoarea:

#! / Bin / bash

Aceasta îi spune sistemului să utilizeze consola pentru a rula fișierul. În plus, caracterul # vă permite să scrieți comentarii. Pentru a crea cel mai simplu exemplu adăugăm încă o linie, văzută în următoarea imagine:

Comanda echo afișează un mesaj pe ecran, în acest caz tipicul „Hello world!” Dacă îl salvăm și îl executăm cu consola vom vedea rezultatul.

Comenzi de bază

Următoarele comenzi sunt comune și foarte utile pentru orice tip de program. Clarificăm că mai sunt multe, dar pentru moment vom acoperi următoarele.

Aliasuri: permite înlocuirea unui șir de cuvinte cu unul mai scurt, permițând reducerea codului.

#create un alias apelat per cu adresa folderului #Downloads alias per = '/ home / user / Downloads' # De fiecare dată când dorim să-l folosim trebuie doar să apelăm # noul cuvânt per #

pauză: vă permite să ieșiți imediat dintr-o buclă pentru, în timp ce, până sau selectați (vom studia buclele în detaliu mai târziu)

#Creați o buclă care va atribui numerele de la 1 la 5 # pentru fiecare „rotație a buclei” pentru contor în 1 2 3 4 5 faceți #Imprimăm valoarea curentă a variabilei #counter, care este analizată de caracterul $ echo " $ contor ”# Dacă valoarea contorului este egală cu 3 dacă [$ contor –eq 3] atunci # Pauza iese din buclă pentru pauza fi realizată

continuare - Similar cu pauza, cu excepția faptului că ignoră bucla curentă și merge la următoarea.

#Creați o buclă care va atribui numerele de la 1 la 5 # pentru fiecare „rotație a buclei” pentru contor în 1 2 3 4 5 faceți #Dacă valoarea contorului este egală cu 3 dacă [$ contor –eq 3] atunci #Continue împiedică analizarea restului ciclului #curentului sărind la următoarea rundă, adică # valoarea 3 nu va fi tipărită. continuați fi echo "$ counter" făcut

declare: declară variabile și le atribuie valori, la fel ca tipul de set (funcționează în același mod). Îl putem combina cu câteva opțiuni: -i declară numere întregi; -r pentru variabilele numai în citire, a căror valoare nu poate fi modificată; –A pentru tablouri sau „tablouri”; -f pentru functii; -x pentru variabilele care pot fi „exportate” în afara mediului scriptului în sine.

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

ajutor: arată ajutorul pentru o comandă specifică.

joburi: arată procesele care rulează.

#Cu –c afișăm numele comenzilor, cu –p # pid (ID proces) al fiecărui proces. locuri de muncă -cp

lasă: evaluează o expresie aritmetică

let a = 11 let a = a + 5 #În cele din urmă imprimăm valoarea lui a care este 16 ecou "11 + 5 = $ a"

local: creează variabile locale, care ar trebui utilizate de preferință în funcțiile scriptului în sine pentru a evita erorile. Puteți utiliza aceleași funcții ca și comanda declare.

local v1 = "Aceasta este o variabilă locală"

deconectare: permite deconectarea completă dintr-un Shell; Util pentru cazurile în care lucrăm cu mai multe ferestre Shell, în care comanda de ieșire va permite să se încheie o singură fereastră la un moment dat.

printf: vă permite să imprimați date și să le formatați. Are multe opțiuni, așa că vom menționa câteva.

. Dolari.

citiți: citiți o linie din intrarea standard (modul utilizat pentru încărcarea datelor prin tastatură, de exemplu). Putem trece opțiuni precum: -t pentru a da un timp limită de citire; -a astfel încât fiecare cuvânt să fie atribuit unei poziții din matricea aname; -d pentru a utiliza un delimitator care va fi scris la sfârșitul liniei; printre alții.

echo "Introduceți numele dvs. și apăsați ENTER" #Citiți numele variabilei citiți numele echo "Numele dvs. este $ name"

tip: descrie o comandă și comportamentul acesteia. Poate fi util să aflați definițiile datelor pentru fiecare comandă.

tip –a '[' #type ne spune că [este o comandă Shell builtin [este un Shell builtin # -a vă permite să găsiți directoarele care conțin # un executabil cu numele scris. [este / usr / bin / [

ulimit: limitează accesul și utilizarea anumitor resurse de sistem la procese, ideal pentru programele care permit modificări administrative sau care vizează diferite tipuri de utilizatori. Când stabilim o limită, scriem un număr care reprezintă kilobyții limitei.

# Vedem limitele noastre actuale ulimit –a # -f permite limitarea utilizatorilor să nu poată crea # fișiere mai mari de 512000 Kb (500 #Mb) ulimit –f 512000 # -v limitează memoria virtuală a procesului. ulimit –v 512000

așteptați: așteptați să se desfășoare un anumit proces sau un anumit job.

# Scriptul așteaptă ca procesul pid # 2585 să fie efectuat

așteptați 2585

Alte comenzi utile pe care le putem adăuga scripturilor sunt reprezentate prin simboluri.

!!: executați din nou ultima comandă

! wer: execută ultima comandă care a început cu expresia „wer”.

'==', '! =', '>', '<', '> =' și '<=': operatori relaționali.

|: Operatorul SAU obișnuia să unească două expresii regulate.

: comanda escape care vă permite să formatați expresii. De exemplu: a pentru o alertă sonoră, n pentru linie nouă, b pentru backspace etc.

Mulțumesc Juan Carlos Ortiz!

Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Mediu dificil el a spus

    Grozav! Oricum, 2 comentarii: Eticheta Ubuntu este pe jumătate prea mare, deoarece generalizează ceva generic. Și dacă aceste tutoriale continuă să avanseze, ar fi bine să fie legate între ele ....
    În afară de asta, această mișcare este interesantă!

  2.   Să folosim Linux el a spus

    Bună contribuție! Grozav!

  3.   Giovanni escobar sosa el a spus

    Numai referințele lipsă pentru cei care doresc să intre mai mult în problemă. Unele bune, deși nu sunt atât de ușor de găsit în țările noastre, sunt
    - Un ghid practic pentru comenzile, editorii și programarea Shell Linux, Mark Sobell (Capitolul 8)
    - Pro Bash Programming, Chris FA Johnson (deși acest lucru este pentru cei care au alte referințe sau un pic mai multe cunoștințe).

    Articol bun

  4.   Să folosim Linux el a spus

    Bună întâlnire! Mulțumesc!

  5.   Patricio Dorantes Jamarne el a spus

    : @ Funcția „Conectare ca” a șters comentariul meu anterior, așa că îl voi rezuma în continuare:
    locuri de muncă -cp
    bash: joburi: -c: opțiune nevalidă
    joburi: utilizare: joburi [-lnprs] [jobspec ...] sau comenzi jobs -x [args]

    -eq -gt -lt nu acceptă variabilele punctului zecimal, între forum și forum am descoperit că bc este un bun aliat:
    dacă [`ecou 9.999> 10 | bc` -eq 1]; atunci
    ecou "9.999 este mai mare decât 10, asigurați-vă că procesorul dvs. funcționează în continuare"
    altfel
    ecou «9.999 nu este mai mare de 10, totul funcționează normal
    fi

  6.   Nu de la Brooklyn el a spus

    Această postare rezumă foarte bine toate generalitățile scripturilor bash:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    Pe acest site veți găsi multe întrebări și răspunsuri despre particularitățile bash:
    http://unix.stackexchange.com/questions/tagged/bash

    Iată câteva scripturi grozave și, le puteți învăța citind scripturile altor persoane:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   Nu de la Brooklyn el a spus

    Ai dreptate cu ceea ce spui, cu excepția bashului. Fiecare sistem pe care l-am văzut are bash în / bin / bash.

    Dar pentru python, perl, rubin, etc, este bine să folosiți asta. fac

  8.   Guille el a spus

    Întâmplător, în facultate folosim scripturi bash, astfel încât datele sunt 10, foarte bine!

  9.   Alex l-am văzut el a spus

    o versiune pdf de descărcat ar fi bună !! 😀

  10.   Marco Antonio De Fuentes el a spus

    Site foarte bun. În cele din urmă am găsit ceva util. Mulțumesc.