Programiranje u bash - 1. dio

Iako ga obično koristimo za administrativne operacije ili operacije upravljanja datotekama, Consola de Linux proširuje svoju funkcionalnost daleko izvan te svrhe, omogućavajući nam programiranje skripte Ovaj vodič nije namijenjen kao cjelovita referenca o Bash programiranju, već kao uvod u osnovne naredbe i strukture, koji će nam omogućiti da proširimo snagu našeg GNU / Linux sistema.

Šta je "skripta"?

U osnovi kažemo da je to datoteka koja sadrži kod napisan na određenom programskom jeziku koji sistem koristi za određeni zadatak. Ne treba imati vanjski ulaz ili grafičko sučelje, ali treba izazvati izlaz obrađenih podataka (čak i ako ih korisnik ne vidi).

Jezik koji koristi Bash definira njegov vlastiti tumač i kombinira sintaksu drugih ljuski, kao što je Korn Shell (ksh) ili C Shell (csh). Mnoge naredbe koje se obično koriste u konzoli mogu se koristiti i u skriptama, osim onih koje se strogo odnose na određenu distribuciju.

Struktura skripte

Za početak moramo imati uređivač teksta i želju za programiranjem. Datoteke koje spremimo s ekstenzijom .sh konzola može izvršiti (ili protumačiti), pod uvjetom da je prvi redak sljedeći:

#! / bin / bash

To govori sistemu da koristi konzolu za pokretanje datoteke. Pored toga, znak # omogućava vam pisanje komentara. Da bismo stvorili najjednostavniji primjer, dodali smo još jedan redak, viđen na sljedećoj slici:

Komanda echo prikazuje poruku na ekranu, u ovom slučaju tipično "Hello world!" Ako ga spremimo i izvršimo s konzolom, vidjet ćemo rezultat.

Osnovne naredbe

Sljedeće naredbe su uobičajene i vrlo korisne za bilo koji tip programa. Pojašnjavamo da ih ima mnogo više, ali za sada ćemo pokriti sljedeće.

Pseudonimi: omogućava zamjenu niza riječi kraćim, što omogućava smanjenje koda.

# Izrađujemo pseudonim koji se zove per sa adresom #Downloads mape alias per = '/ home / user / Downloads' # Svaki put kada ga želimo koristiti samo moramo pozvati # novu riječ po # Da bismo uništili taj alias, koristimo unalias unalias per

break: omogućava vam da odmah izađete iz for, while, until ili select petlje (petlje ćemo detaljno proučiti kasnije)

# Kreirajte petlju koja će dodijeliti brojeve od 1 do 5 # za svaki "zaokret petlje" za brojač u 1 2 3 4 5 do # Ispisujemo trenutnu vrijednost varijable #counter, koja se analizira znakom $ echo " $ counter ”# Ako je vrijednost brojača jednaka 3 ako je [$ counter –eq 3], onda #Prekid izlazi iz petlje za prekid fi

continue - Slično prekidu, samo što zanemaruje trenutnu petlju i prelazi na sljedeću.

# Stvorite petlju koja će dodijeliti brojeve od 1 do 5 # za svaki "zaokret petlje" za brojač u 1 2 3 4 5 do #Ako je vrijednost brojača jednaka 3 ako je [$ counter –eq 3] onda # Nastavite sprečava da se analizira ostatak trenutnog # ciklusa skokom u sljedeću rundu, tj. # vrijednost 3 neće biti ispisana. nastavi fi echo "$ brojač" gotovo

proglašava: deklarira varijable i dodjeljuje im vrijednosti, baš kao i typeset (rade na isti način). Možemo ga kombinirati s nekim opcijama: -i proglašava cijele brojeve; -r za varijable samo za čitanje, čija se vrijednost ne može mijenjati; –A za nizove ili „nizove“; -f za funkcije; -x za varijable koje se mogu "izvesti" izvan okruženja same skripte.

proglasiti –i num = 12 izjaviti –x pi = 3.14

pomoć: prikazuje pomoć za određenu naredbu.

poslovi: prikazuje pokrenute procese.

# Sa –c prikazujemo ime naredbi, sa –p # pid (id procesa) svakog procesa. poslovi -cp

neka: procijeni aritmetički izraz

neka je a = 11 neka je a = a + 5 # Konačno ispisujemo vrijednost a koja je 16 echo "11 + 5 = $ a"

local: kreira lokalne varijable, koje bi trebalo koristiti po mogućnosti u funkcijama same skripte kako bi se izbjegle pogreške. Možete koristiti iste funkcije kao naredba proglašenja.

local v1 = "Ovo je lokalna varijabla"

odjava: omogućava potpuno odjavu iz Shell-a; korisno u slučajevima kada radimo s više prozora školjke, u kojima će naredba za izlaz istovremeno dopustiti da se prekine samo jedan prozor.

printf: omogućava vam ispis podataka i njihovo formatiranje. Ima mnogo opcija, pa ćemo spomenuti nekoliko.

#% f ispisuje kao plutajući broj, n za novu # liniju ispisaf "% fn" 5 5.000000 # & d omogućava prosljeđivanje decimalnih brojeva kao argumente printf "Postoji% d naloga koji se vrednuju u% d dolara.n" 20 500 Postoji 20 naloga koji se vrednuju na 500 Dolari.

čitanje: očitavanje retka sa standardnog ulaza (na primjer modul koji se koristi za učitavanje podataka putem tastature). Možemo proslijediti opcije kao što su: -t kako bismo odredili vrijeme čitanja; -a tako da je svaka riječ dodijeljena položaju u nizu aname; -d koristiti graničnik koji se piše na kraju retka; između ostalih.

echo "Unesite svoje ime i pritisnite ENTER" #Pročitajte ime varijable read name echo "Vaše ime je $ name"

type: opisuje naredbu i njeno ponašanje. Može biti korisno saznati definicije podataka za svaku naredbu.

type –a '[' #type nam govori da je [je Shell izgrađena naredba [je Shell izgrađena # -a omogućava pronalaženje direktorija koji sadrže # izvršnu datoteku s napisanim imenom. [je / usr / bin / [

ulimit: ograničava pristup i upotrebu određenih sistemskih resursa na procese, idealno za programe koji omogućavaju administrativne promjene ili koji su usmjereni na različite tipove korisnika. Prilikom postavljanja ograničenja napišemo broj koji predstavlja kilobajt ograničenja.

# Vidimo da su naša trenutna ograničenja ulimit –a # -f omogućava vam da ograničite korisnike da ne mogu # kreirati datoteke veće od 512000 Kb (500 #Mb) ulimit -f 512000 # -v ograničava virtualnu memoriju procesa. ulimit –v 512000

čekati: pričekajte da se nastavi određeni postupak ili posao

# Skripta čeka da se izvrši proces pid # 2585

čekaj 2585

Ostale korisne naredbe koje možemo dodati skriptama predstavljene su simbolima.

!!: ponovo pokrenite zadnju naredbu

! wer: izvršava zadnju naredbu koja je započela izrazom "wer".

'==', '! =', '>', '<', '> =' i '<=': relacijski operatori.

|: Operator OR se obično koristio za spajanje dva regularna izraza.

: escape naredba koja vam omogućuje formatiranje izraza. Na primjer: a za zvučno upozorenje, n za novi red, b za backspace itd.

Hvala Juan Carlos Ortiz!

Sadržaj članka pridržava se naših principa urednička etika. Da biste prijavili grešku, kliknite ovdje.

10 komentara, ostavi svoj

Ostavite komentar

Vaša e-mail adresa neće biti objavljena.

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Srednje teško rekao je

    Super! U svakom slučaju, 2 komentara: Ubuntu oznaka je upola previše, jer generira nešto što je generičko. A ako ovi vodiči nastave napredovati, bilo bi dobro da su međusobno povezani ...
    Osim toga, ovaj potez je zanimljiv!

  2.   Koristimo Linux rekao je

    Dobar doprinos! Super!

  3.   Giovanni escobar sosa rekao je

    Nedostaju reference samo onima koji žele detaljnije ući u stvar. Neke su dobre iako ih u našim zemljama nije tako lako pronaći
    - Praktični vodič za Linux naredbe, uređivače i programiranje školjki, Mark Sobell (poglavlje 8)
    - Pro Bash programiranje, Chris FA Johnson (iako je ovo za one koji imaju druge reference ili malo više znanja).

    Dobar članak.

  4.   Koristimo Linux rekao je

    Dobar spoj! Hvala ti!

  5.   Patricio Dorantes Jamarne rekao je

    : @ Funkcija "prijava kao" izbrisala je moj prethodni komentar, pa ću ga rezimirati dalje:
    poslovi -cp
    bash: jobs: -c: nevaljana opcija
    poslovi: upotreba: poslovi [-lnprs] [poslovi…] ili naredba poslovi -x [args]

    -eq -gt -lt ne prihvaćaju varijable decimalne točke, između foruma i foruma otkrio sam da je bc dobar saveznik:
    if [`echo 9.999> 10 | bc` -eq 1]; onda
    echo "9.999 je veći od 10, provjerite radi li vaš procesor i dalje"
    drugo
    echo «9.999 nije veće od 10, sve radi normalno
    fi

  6.   NotFromBrooklyn rekao je

    Ovaj post vrlo dobro sažima sve općenitosti bash skriptiranja:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    Na ovoj stranici pronaći ćete mnoga pitanja i odgovore o bash osobenostima:
    http://unix.stackexchange.com/questions/tagged/bash

    Evo nekoliko zaista super skripti, i hej, možete ih naučiti čitajući tuđe skripte:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   NotFromBrooklyn rekao je

    U pravu si sa onim što govoriš, osim za bash. Svaki sistem koji sam vidio ima bash u / bin / bash.

    Ali za python, perl, ruby, itd., U redu je to koristiti. Imam

  8.   Guille rekao je

    Slučajno, na fakultetu koristimo bash skripte, tako da je podatak 10, vrlo dobar!

  9.   alex video sam rekao je

    pdf verzija za preuzimanje bi bila dobra !! 😀

  10.   Marko Antonio De Fuentes rekao je

    Vrlo dobra stranica. Napokon sam pronašao nešto korisno. Hvala ti.