Programiranje u bashu - 1. dio

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

Što je "skripta"?

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

Jezik koji koristi Bash definiran je vlastitim interpretatorom 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 .sh nastavkom konzola može izvršiti (ili protumačiti) sve dok je prvi redak sljedeći:

#! / bin / bash

To govori sustavu da koristi konzolu za pokretanje datoteke. Također, znak # omogućuje vam pisanje komentara. Da bismo stvorili najjednostavniji primjer, dodali smo još jedan redak, prikazan na sljedećoj slici:

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

Osnovne naredbe

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

Pseudonimi: omogućuje zamjenu niza riječi kraćim, omogućujući smanjenje koda.

#create alias pozvani per s adresom #Downloads mape alias per = '/ home / user / Downloads' # Svaki put kad ga želimo koristiti samo moramo nazvati # novu riječ po # Da bismo uništili taj alias, koristimo unalias unalias per

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

# Stvorite 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, koju analizira znak $ echo " $ counter ”#Ako je vrijednost brojača jednaka 3 ako je [$ counter –eq 3] onda #Prekid izlazi iz petlje za prekid

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 učinite # Ako je vrijednost brojača jednaka 3 ako je [$ counter –eq 3] onda # Nastavi sprječava analizu ostatka ciklusa #current preskakanjem 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š poput sloga (oni 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 matrice ili „nizove“; -f za funkcije; -x za varijable koje se mogu "izvesti" izvan okruženja same skripte.

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

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

poslovi: prikazuje pokrenute procese.

#S –c prikazujemo ime naredbi, s –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ćuje potpuno odjavu iz Shell-a; korisno u slučajevima kada radimo s više prozora školjke, u kojima će naredba za izlaz istodobno dopustiti da se prekine samo jedan prozor.

printf: omogućuje vam ispis podataka i njihovo formatiranje. Ima mnogo mogućnosti, pa ćemo spomenuti nekoliko.

#% f ispisuje kao plutajući broj, n za novi # redak printf "% fn" 5 5.000000 # & d omogućuje prosljeđivanje decimalnih brojeva kao argumente printf "Postoji% d narudžbi koje se vrednuju u% d dolara.n" 20 500 Postoji 20 narudžbi vrijednosti 500 Dolari.

čitanje: očitavanje retka sa standardnog unosa (primjerice modul koji se koristi za učitavanje podataka putem tipkovnice). 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 zapisuje 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"

vrsta: opisuje naredbu i njezino 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ćuje pronalaženje direktorija koji sadrže # izvršnu datoteku s napisanim imenom. [je / usr / bin / [

ulimit: ograničava pristup i upotrebu određenih resursa sustava na procese, idealno za programe koji dopuštaju administrativne promjene ili koji su orijentirani na različite tipove korisnika. Prilikom postavljanja ograničenja napišemo broj koji predstavlja kilobajte ograničenja.

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

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

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

čekaj 2585

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

!!: ponovno pokrenite zadnju naredbu

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

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

|: Operator OR obično se koristio za spajanje dvaju regularnih izraza.

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

Hvala Juan Carlos Ortiz!

Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  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 obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Srednje teško dijo

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

  2.   Koristimo Linux dijo

    Dobar doprinos! Sjajno!

  3.   Giovanni escobar sosa dijo

    Nedostaju reference samo onima koji žele detaljnije objasniti 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 školjke, 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 dijo

    Dobar spoj! Hvala vam!

  5.   Patricio Dorantes Jamarne dijo

    : @ Funkcija "prijava kao" izbrisala je moj prethodni komentar, pa ću ga sažeti 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]; zatim
    echo "9.999 je veće od 10, provjerite radi li vaš procesor i dalje"
    drugo
    echo «9.999 nije veće od 10, sve radi normalno
    fi

  6.   Nije iz Brooklyna dijo

    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 osobinama:
    http://unix.stackexchange.com/questions/tagged/bash

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

  7.   Nije iz Brooklyna dijo

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

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

  8.   Guille dijo

    Igrom slučaja, na fakultetu koristimo bash skripte, tako da je podatak 10, vrlo dobro!

  9.   alex vidio sam dijo

    pdf verzija za preuzimanje bi bila dobra !! 😀

  10.   Marco Antonio De Fuentes dijo

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