Programozás a bash-ban - 1. rész

Míg általában adminisztratív vagy fájlkezelési műveletekhez használjuk, a kényelem de Linux funkcionalitását messze meghaladja e célt, lehetővé téve számunkra a programozást szkriptek Ez az útmutató nem a Bash programozás teljes körű referenciája, hanem az alapvető parancsok és struktúrák bevezetése, amelyek lehetővé teszik számunkra, hogy bővítsük GNU / Linux rendszerünk erejét.

Mi az a "szkript"?

Alapvetően azt mondjuk, hogy ez egy fájl, amely egy bizonyos programozási nyelven írt kódot tartalmaz, amelyet a rendszer egy bizonyos feladatra használ. Nem szükséges külső bemenet vagy grafikus interfész, de a feldolgozott adatok kimenetét kell előidéznie (még akkor is, ha a felhasználó nem látja).

A Bash által használt nyelvet a saját tolmácsa határozza meg, és egyesíti a többi Shell szintaxisát, például a Korn Shell (ksh) vagy a C Shell (csh) szintaxisát. A konzolban általában használt parancsok közül sok használható szkriptekben is, kivéve azokat, amelyek szigorúan egy adott terjesztésre vonatkoznak.

A szkript felépítése

A kezdéshez rendelkeznünk kell szövegszerkesztővel és programozási vágyunkkal. A .sh kiterjesztéssel mentett fájlokat a konzol futtathatja (vagy értelmezheti), amennyiben az első sor a következő:

#! / bin / bash

Ez arra utasítja a rendszert, hogy a konzol segítségével futtassa a fájlt. Ezenkívül a # karakter lehetővé teszi megjegyzések írását. A legegyszerűbb példa létrehozásához adjunk még egy sort, amely a következő képen látható:

Az echo parancs üzenetet jelenít meg a képernyőn, ebben az esetben a tipikus "Hello world!" Ha elmentjük és végrehajtjuk a konzollal, látni fogjuk az eredményt.

Alapvető parancsok

A következő parancsok általánosak és nagyon hasznosak bármilyen típusú programhoz. Tisztázzuk, hogy még sok más van, de most a következőkre térünk ki.

Álnevek: lehetővé teszi, hogy a szavakat egy rövidebbre cseréljék, lehetővé téve a kód csökkentését.

# Létrehozunk egy per nevű álnevet a #Downloads mappa alias címével = "/ home / user / Downloads" # Minden alkalommal, amikor használni szeretnénk, csak # új szót kell hívnunk # # Az álnevek megsemmisítéséhez unialias unialikat használunk

törés: lehetővé teszi az azonnali kilépést a, míg, amíg vagy a ciklusból (a ciklusokat később részletesen tanulmányozzuk)

# Hozzon létre egy hurkot, amely 1-től 5-ig fogja rendelni a számokat # a hurok minden egyes fordulatához az 1 2 3 4 5 számlálóhoz. # Kinyomtatjuk a #counter változó aktuális értékét, amelyet a $ echo karakter elemez. " $ counter ”#Ha a számláló értéke 3, ha [$ counter –eq 3], akkor #The break kilép a ciklusból

folytatás - Hasonló a megszakításhoz, azzal a különbséggel, hogy figyelmen kívül hagyja az aktuális ciklust, és a következőre megy.

# Hozzon létre egy hurkot, amely 1-től 5-ig fogja rendelni a számokat # a hurok minden egyes fordulatához az 1 2 3 4 5 számlálóhoz. Tegye #Ha a számláló értéke 3, ha [$ számláló –eq 3], akkor #Folytassa megakadályozza az aktuális # ciklus többi elemzését a következő körre ugrással, vagyis a # 3. érték nem lesz kinyomtatva. folytatás fi echo "$ counter" kész

deklarál: deklaráljuk a változókat és hozzárendeljük hozzájuk az értékeket, ugyanúgy, mint a szett (ugyanúgy működnek). Egyesíthetjük néhány opcióval: -i egész számokat deklarál; -r csak olvasható változók esetén, amelyek értéke nem változtatható meg; –A mátrixok vagy „tömbök” esetében; -f funkciókhoz; -x azon változók számára, amelyek "exportálhatók" a szkript környezetén kívül.

deklarálja –i szám = 12 deklarálja –x pi = 3.14

help: segítséget mutat egy adott parancshoz.

job: a futó folyamatokat mutatja.

# A –c segítségével megmutatjuk a parancsok nevét, a –p # karakterrel az egyes folyamatok pid-jével (process id). munkahelyek -cp

let: értékelje a számtani kifejezést

hagyjuk a = 11 legyen a = a + 5 # Végül kinyomtatjuk a értéke 16 visszhangot "11 + 5 = $ a"

local: helyi változók létrehozása, amelyeket a hibák elkerülése érdekében lehetőleg a szkript funkcióiban kell használni. Ugyanazokat a funkciókat használhatja, mint a declare parancs.

local v1 = "Ez egy helyi változó"

kijelentkezés: lehetővé teszi a Shellből való teljes kijelentkezést; hasznos olyan esetekben, amikor egynél több héjablakkal dolgozunk, amelyekben az exit parancs egyszerre csak egy ablak bezárását teszi lehetővé.

printf: lehetővé teszi adatok kinyomtatását és formázását. Sok lehetősége van, ezért megemlítünk néhányat.

#% f lebegő számként nyomtat, n az új # sor nyomtatásához "% fn" 5 5.000000 # & d lehetővé teszi a tizedes számok átadását argumentumként printf "% d megrendelés% d dollárban van megadva. n" 20 500 Dollár.

read: olvas egy sort a standard bemenetből (például a billentyűzeten keresztüli adatok betöltésére használt modul). Olyan opciókat adhatunk át, mint: -t, hogy megadhassuk az olvasási határidőt; -a úgy, hogy minden szó az aname tömb egy pozíciójához van hozzárendelve; -d a sor végére írt határoló használatára; többek között.

echo "Írja be a nevét és nyomja meg az ENTER billentyűt" # Olvassa el a változó nevét olvassa el a nevet echo "A neve $ name"

type: leírja a parancsot és annak viselkedését. Hasznos lehet megtudni az egyes parancsok adatdefinícióit.

A –a '[' #type azt mondja, hogy a [egy Shell beépített parancs [egy a Shell beépített # -a parancs lehetővé teszi, hogy megtalálja azokat a könyvtárakat, amelyek # végrehajtó fájlt tartalmaznak a megadott névvel. [a / usr / bin / [

ulimit: bizonyos rendszererőforrások hozzáférését és használatát korlátozza a folyamatokhoz, ideális azokhoz a programokhoz, amelyek lehetővé teszik az adminisztratív változtatásokat, vagy amelyek különböző típusú felhasználók számára vannak orientálva. A határérték beállításakor írunk egy számot, amely a határ kilobájtjait képviseli.

# Látjuk, hogy az ulimit –a # -f a jelenlegi korlátainkat arra korlátozza, hogy a felhasználók ne # hozzanak létre 512000 Kb (500 # MB) méretű fájlokat. Az ulimit –f 512000 # -v korlátozza a folyamat virtuális memóriáját. ulimit –v 512000

vár: várjon egy bizonyos folyamat vagy feladat folytatását.

# A szkript megvárja a pid # 2585 folyamat végrehajtását

várj 2585

Más hasznos parancsokat, amelyeket hozzáadhatunk a szkriptekhez, szimbólumok jelzik.

!!: futtassa újra az utolsó parancsot

! wer: végrehajtja az utolsó parancsot, amely a „wer” kifejezéssel kezdődött.

'==', '! =', '>', '<', '> =' és '<=': relációs operátorok.

|: Az OR operátor általában két reguláris kifejezéshez csatlakozott.

: escape parancs, amely lehetővé teszi a kifejezések formázását. Például: a hangjelzéshez, n újsorhoz, b visszalépéshez stb.

Köszönöm Juan Carlos Ortiz!

Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   Közepesen nehéz dijo

    Nagy! Egyébként 2 megjegyzés: Az Ubuntu tag félig túl sok, mivel általánosít valamit. És ha ezek az oktatóanyagok tovább haladnak, jó lenne, ha összekapcsolódnának egymással ...
    Ezen kívül érdekes ez a lépés!

  2.   Használjuk a Linuxot dijo

    Jó hozzájárulás! Nagy!

  3.   Giovanni escobar sosa dijo

    Csak azok hiányzó hivatkozások, akik többet akarnak belemenni az ügybe. Néhány jó, bár országunkban nem olyan könnyű megtalálni őket
    - Gyakorlati útmutató a Linux parancsokhoz, szerkesztőkhöz és a héj programozásához, Mark Sobell (8. fejezet)
    - Pro Bash Programming, Chris FA Johnson (bár ez azoknak szól, akik más referenciákkal rendelkeznek, vagy valamivel több ismerettel rendelkeznek).

    Jó a cikk.

  4.   Használjuk a Linuxot dijo

    Jó randevú! Köszönöm!

  5.   Patricio Dorantes Jamarne dijo

    : @ A "bejelentkezés másként" funkció törölte az előző megjegyzésemet, ezért tovább összefoglalom:
    munkahelyek -cp
    bash: jobok: -c: érvénytelen opció
    jobok: használat: jobok [-lnprs] [jobspec…] vagy job -x parancs [args]

    -eq -gt -lt nem fogadnak el tizedesváltozókat, a fórum és a fórum között felfedeztem, hogy a bc jó szövetséges:
    ha [`visszhang 9.999> 10 | bc`-ekv 1]; akkor
    echo "9.999 nagyobb, mint 10, győződjön meg róla, hogy a processzor továbbra is működik"
    más
    echo «9.999 nem nagyobb, mint 10, minden normálisan működik
    fi

  6.   Nem Brooklynból dijo

    Ez a bejegyzés nagyon jól összefoglalja a bash szkriptek összes általánosságát:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    Ezen az oldalon számos kérdést és választ talál a bash sajátosságairól:
    http://unix.stackexchange.com/questions/tagged/bash

    Íme néhány nagyon jó szkript, és hé, megtanulhatod őket mások szkriptjeinek elolvasásával:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   Nem Brooklynból dijo

    Igazad van azzal, amit mondasz, a bash kivételével. Minden rendszerben, amit láttam, a / bin / bash fájl található.

    De a python, a perl, a rubin stb. Esetében jó használni. Én igen

  8.   Guille dijo

    Véletlenül az egyetemen bash szkriptet használunk, így az adatok 10-esek, nagyon jó!

  9.   Alex vi dijo

    jó lenne egy letölthető pdf verzió !! 😀

  10.   Marco Antonio De Fuentes dijo

    Nagyon jó oldal. Végül találtam valami hasznosat. Köszönöm.