Bash Scripting: Sprievodca vytvorením

Bash skriptovacie skripty používajú správcovia systému, programátori, sieťoví inžinieri, akademici a prakticky každý, kto pravidelne používa Linux /Unix. Bez ohľadu na to, čo používateľ robí a aké je jeho celkové zvládnutie počítačových zručností, môže nájsť správny spôsob, ako používať Bash skriptovanie. Hoci sú správne, nazývajú sa shell-skriptmi, ale väčšina programátorov odkazuje na ich Bash skripty. Ako interaktívny shell, je to krátky jazyk pre iniciovanie a riadenie výpočtov. Ako skriptovací jazyk je to jazyk špecifický pre doménu, pre správu a usporiadanie procesov a súborov.

Definícia skriptu Bash

Bash skriptovanie - tlmočník príkazového jazyka. Je široko dostupný v rôznych operačných systémoch a je predvolený príkazový analyzátor pre väčšinu systémov GNU /Linux. Toto je skratka "Bourne Again Shell".


Ďalšie definície:
  • Shell je makroprocesor, ktorý umožňuje vykonávať interaktívne alebo neinteraktívne spustenie príkazu.
  • Skriptovanie umožňuje konfigurovať automatické vykonávanie príkazov, ktoré by inak pôsobili interaktívne jeden za druhým.
  • Bash skriptovanie je predvolené v mnohých systémoch GNU /Linux, takže skript shell funguje aj bez toho, aby bol definovaný ako tlmočník. Ak chcete zistiť, čo je spustený predvolený príkaz, zadajte: $ echo $ SHELL /bin /bash. Existujú aj ďalšie interpretácie, ako napríklad Korn, C a mnoho ďalších. Z tohto dôvodu sa odporúča určiťshell interpreter, ktorý sa použije špeciálne pre obsah skriptu.


    Teraz všetky skripty obsahujú definíciu interpretu shell: #! /Bin /bash. Konkrétnejšie je to napísané v špeciálnej príručke Sprievodca skriptom Advanced Bash.

    Názvy a povolenia súborov

    Ak chcete spustiť shell skript, súbor musí byť spustiteľný, vykonaný pomocou príkazu "chmod + x FILENAME". V predvolenom nastavení sa všetky novovytvorené súbory nevykonávajú bez ohľadu na príponu rozšírenia súboru. V skutočnosti je posledná funkcia v systémoch GNU /Linux v podstate žiadny význam. Pri vykonávaní príkazu "ls" pre zoznam všetkých súborov a adresárov je okamžite zrejmé, že súbor .sh je uveriteľný shell shell a ".jpg" bude komprimovaný obrázok. Ďalšie informácie o rozšíreniach súborov v tomto jazyku nájdete v sprievodcovi skriptov Advanced Bash. V súboroch GNU /Linux možno príkaz použiť na identifikáciu typu súboru. Ako je zrejmé z nižšie uvedeného príkladu, prípona súboru nemá žiadny význam a v tomto prípade je tlmočník tzv. Shellu dôležitejší.
    Takže názov shellového skriptu "0_xyz" funguje dobre, hoci sa programátori snažia vyhnúť tomu čo najviac.

    Príkaz shell PATH

    Keď vývojár zadá príkaz do shellu, Bash sa pozrie na niektoré adresáre, aby zistil, či ho nájde. Preto podľa sprievodcu skriptovania Bash, ak píšete "ls" do shell, bude spúšťať iba príkaz, ak je v jeho ceste. Operácia skončí s chybou, ak jenebudú v jednom zo zoznamov, ktoré sú súčasťou trasy. Ak existuje koincidencia vo viac ako jednom adresári na ceste, vyberie si prvú. Trasu môžete nájsť spustením:
    echo $ PATH. /Home /jzb /bin :: /usr /local /bin: /usr /bin: Na obrazovke sa niečo také objaví /bin: /usr /bin /X11: /usr /X11R6 /bin: /usr /hry: /usr /lib /jvm /jre /bin.

    Správna cesta k domovskému adresáru

    Každý adresár, v ktorom Bash vyzerá, je oddelený dvojbodkou. V tomto prípade, z ktorých prvý bude kontrolovať katalógu «bin», potom /usr /local /bin, /usr /bin. Ak je používateľ prihlásený ako root, by malo vidieť ďalšiu sadu adresárov, vrátane adresára /usr /local /sbin, /usr /sbin. Môžete ich pridať do pohybu alebo upraviť úpravou súborov: ~ /.bashrc a ~ /.bash_profile. Napríklad: PATH = "$ HOME /bin: $ PATH". Môžete mierne zmeniť toto pravidlo a nainštalovať pokročilé Bash skriptovanie. PATH "=" informuje Bash, bude to nastaviť cestu a «$ HOME /bin» pozýva ho pridať do adresára bin a potom «$ PATH» povzbudzuje ho pridať všetky dáta, ktoré na trase. Parameter «:» je oddeľovač medzi prvkami. Vývojár na obrazovke svojho monitora zobrazí niečo podobné: ak [-d "$ HOME /bin"]; potom PATH = "$ HOME /bin: $ PATH" fi. Toto pravidlo skontroluje, či adresár existuje «bin» v domovskom adresári a pridajte ju na ceste k viac správne vykonávať operácie «run Bash script».

    Alias ​​v riadku

    Alias ​​je reťazec, v ktorom bude Bash nahradený iným tímom. Jednoduchý príklad: alias ls = 'ls --color = auto'. Hovorí mu, že keď spustenie «ls», musíte spustiť «ls --color = auto», bez vytáčania zvyšok. Môžete nastaviť aliasy na príkazovom riadku a je to dobré na testovanie.
    Dáva to zmyselnastaviť aliasy na "~ /.bash_profile a ~ /.bashrc". Alebo vytvorte niečo ako "~ /.aliases" a zavolajte z konfiguračných súborov nasledovne: if [-f ~ /.bash_aliases]; potom. ~ /.bash_aliases fi Ak chcete zobraziť už existujúce aliasy, stačí ich spustiť do shell. V rozložení je v predvolenom nastavení označená. Napríklad predvolené nastavenie je openSUSE 11.2 bez akýchkoľvek zmien.
    Ako test môžete vidieť, že je už nainštalovaný v distribúcii a pokúsiť sa urobiť niekoľko vlastných možností.

    Rozšírenie škrupiny

    Predtým, než Bash vykoná príkaz, vyhodnotí aliasy na zadávanie a rozširovanie a iné výrazy vždy, keď to bude potrebné. Má niekoľko znakov, ktoré sa nevyhnutne rozšíria tak, aby zodpovedali jednej alebo viacerým znakom a nazývajú sa "symbolom generalizácie". Takéto porovnanie modelov môže byť naozaj užitočné. Ak chcete napríklad vidieť všetky súbory JPEG v adresári, spustite "ls * jpg" za predpokladu, že sú súbory JPEG označené ako "jpg" a Bash ich rozbalí tak, aby zodpovedali ľubovoľnému názvu súboru, ktorý končí jpg.

    Ak potrebujete kombinovať len 1 znak, použite "?". Bude to znamenať jeden znak, takže "ls?" .Jpg "sa bude zhodovať len s názvami súborov, napríklad" 1.jpg "alebo" a.jpg ", nie" 01.jpg ". Bash tiež umožňuje zosúladiť rozsahy znakov pomocou zátvoriek. Použitie [abc12] bude zodpovedať jednej z znakov v rozšírení. Takže práca s "ls-lh [abc12] .jpg" bude korelovaná s a.jpg, b.jpg, c.jpg, 1.jpg a 2.jpg, ale nie 12.jpg alebo abc.jpg. Môžete nulovať šablónu podľa predpony "bang" (!), Napríklad: ls -lh [! Ab12]bude spĺňať alebo c.jpg 3.jpg, ale 2.jpg a tak ďalej d Ďalšie šikovný trik. -. predlžovacieho držiaku, keď je potreba organizovať dokumenty roky a termíny. Napríklad, ak adresár zložky ~ /Dokumenty sú podadresára 2010 od 01 do 12 rokov a nepotrebujú k tlači 01-12 Bash urobiť miesto: mkdir 2010 /{0112}. Keď sa číta pravidlo, rozširuje to, čo je v zložených zátvorkách je od 01 až 12. To tiež pracuje s písmenami, takže v prípade potreby prostredníctvom ďalšieho z, môže bežať mkdir {az} a bude vytvárať adresáre až z. Môže tiež pracovať s veľkými písmenami.

    Spracovanie skriptov

    Existuje alternatívny spôsob spustenia skriptu Bash. Vo veľmi zjednodušenom pohľade jeho scenár - nie je nič iné ako textový súbor, ktorý obsahuje inštrukcie, ktoré majú vykonávať postupne odhora až dole. Ako sa interpretujú pokyny závisí od konkrétnej shebang alebo od spôsobu vykonávania skriptu.
    Ďalšou metódou pre implementáciu skriptov je explicitne zavolať jeho interpret, napríklad $ bash date.sh. Tak, skript byť vykonané, bez toho aby ste museli spúšťať shell skript bez reklám shebang, priamo v systéme operačného systému, čo spustiteľný binárny bash. Takže obsah súboru date.sh sa načíta a interpretuje ako Bash Shell Script.

    , relatívna a absolútna cesta

    Pred oficiálnym programu script shell, napríklad výjazd Bash skript, je nutné definovať navigáciu s ním rozlišovať medzi relatívnou a absolútnu cestu k súboru. Pravdepodobne najlepšia analógia, ktorá vysvetľuje relatívnu a absolútnu cestu k súboruvizualizovať súborový systém GNU /Linux ako viacúrovňovú budovu. Koreňový adresár je vstupné dvere budovy, označené polohou, poskytuje vstup do celého súborového systému "štruktúry", a preto poskytuje prístup k všetkým adresárom - "poschodia" a "miestnosti" - a súbory - k "obyvateľom". Napríklad, ak chcete prejsť do izby 1 v 3. poschodí, najprv musíte vstúpiť do hlavných dverí a potom prejsť do 3. poschodia (úroveň 3) a potom vstúpiť do miestnosti (miestnosť 1). Takže absolútna cesta k tejto konkrétnej miestnosti na podlahe vnútri budovy "/level3 /room1". Preto ak chcete navštíviť izbu2 aj na úrovni 3, najprv nájdite aktuálnu polohu, ktorou je miestnosť 1, zadaním "/" a potom zahrnutím názvu miestnosti izba "izba2". To má relatívnu cestu k miestnosti 2, ktorá je v tomto prípade "/room2". Keďže v tomto príklade už bol užívateľ na tretej úrovni, nemusí opustiť celú budovu a znovu prejsť absolútnou cestou cez hlavný vchod /úroveň3 /miestnosť2. Našťastie má GNU /Linux jednoduchý kompasový nástroj, ktorý pomáha programátorovi presúvať súborový systém ako príkaz "pwd". Tento príkaz vždy vytlačí aktuálne miesto, keď je vykonané. Nasledujúci príklad použije príkazy "cd" a "pwd" pre navigáciu v systéme súborov GNU /Linux pomocou absolútnych a relatívnych ciest.
    Ďalšie pokračovanie.
    Vykonajte príkaz "cd" bez akýchkoľvek argumentov, aby ste mohli okamžite prejsť k domovskému adresáru používateľa odkiaľkoľvek. Ako môžete vidieť, navigácia cez súborový systém GNU /Linux je jednoduchá a zároveň veľmi mätúcatému.

    Pojmy premenných

    Takmer každý programovací jazyk má koncept premenných - symbolický názov pre časť pamäte, ktorému môžu byť priradené hodnoty, čítané a manipulované s jej obsahom. Napríklad pre príklad Bash skriptov, Hello World možno vykonať pomocou premenných. Všimnite si, že okolo značky "=" nesmú byť žiadne medzery:
  • VAR = hodnota funguje;
  • VAR = hodnota nefunguje.
  • V prvom prípade shell vidí symbol "=" a spracováva príkaz ako priradenie premennej. V druhom prípade shell predpokladá, že VAR musí byť meno príkazu a pokúsi sa ho vykonať. Zadajte nasledujúci kód v var.sh.
    Toto priradí premennej "Hello World" premennej MY_MESSAGE. Vyžaduje to úvodzovky okolo reťazca Hello World a premenná môže obsahovať len jednu hodnotu, takže riadok s medzerami by mal byť zobrazený tak, že shell vie, že všetko sa považuje za jedno. V opačnom prípade sa shell pokúsi vykonať príkaz "Svet" po priradení "MY_MESSAGE = Ahoj". Shell nie je náročný na typy premenných, môžu ukladať reťazce, celé čísla, platné čísla - všetko, čo užívateľ má rád. Skúsení programátori venujú pozornosť skutočnosti, že špeciálne znaky musia byť správne chránené. To sa deje pomocou príkazu na čítanie, ktorý číta reťazec zo štandardného vstupu do dodanej premennej. Ak mu zadáte celé meno a nepoužívate dvojité úvodzovky príkazu "echo", stále sa zobrazuje správne. Väčšina jazykov má koncept slučiek, ak potrebujete opakovať úlohu dvadsaťkrát, je nepravdepodobné, že používateľ chce zadávať kód 20 krát, a pravdepodobne,s chybami Za týmto účelom sú v slučke Bourne slučky "za" a "zatiaľ". Vďaka tomu je trochu menej príležitostí ako iné jazyky, ale nikto sa argumentuje tým, že programovací shell má právomoc C. Pre cyklus sa opakuje pomocou sady hodnôt tak dlho, kým sa zoznam vyčerpaný, GHB, hodnoty NJV môže byť ľubovoľná.

    Prvý scenár

    Pre prvý shellový skript môžete jednoducho napísať skript, ktorý hovorí "Hello World." Vytvorte súbor (first.sh) takto: first.sh Prvý riadok hovorí, Unix, treba súbor spustiť /bin /sh. Toto je štandardné usporiadanie škrupín pre takmer každý Unix systém. Ak používate Linux Bash skript, potom GNU /Linux /bin /sh, zvyčajne symbolický odkaz na bash alebo nedávno bola použitá pomlčka. Druhý riadok začína špeciálnym znakom "#". Označuje riadok ako komentár, úplne ho ignoruje. Jedinou výnimkou je, keď začína prvý riadok súboru "#!". Jedná sa o samostatné smernice, ktorá sa domnieva, zvlášť Unix a znamená, že aj pri použití «csh», «ksh» alebo niečo ako interaktívny shell, sa ďalej interpretovaný Bourne. Podobne, Perl môže začať riadok: #! /Usr /bin /perl Interaktívny shell oznamuje, že nasledujúci príkaz by mal spustiť perl. Nasledujúce sú bežne používané pre programovanie Bourne shell: #! /Bin /sh. Tretí riadok vykoná príkaz "echo" s dvomi parametrami alebo argumentmi: prvá je "Hello"; Druhým je "Svet". Venujte pozornosť tomu, že "echo" automaticky nastaví jeden priestor medzi jeho parametrami. Symbol stále uvádza # komentár a všetkoNasledujúce sú shell ignorované.

    Skúšobné testy

    ​​Test sa používa prakticky pre každý písaný skript shell. V tomto prípade nie je "test" nazývaný tak priamo, častejšie používajte notáciu "[". Online javljaetsja symvolycheskoy odkazom эtoho slov Avto Set Program shell viac než chytaemыmy.Obыchno Tento oznachaet, niečo veľmi shell Bash skript bude ynterpretyrovatsya "[" Ako znamenať "test", aj keď stredu Unix nastroena inak. To oznachaet že «[" naozaj tento program, ako, ls ', a iní, preto IIa dolzhna bыt obklopenej bielymi znakmi: if [$ foo =, bar'] nebude fungovať, pretože je interpretovaný ako: ak je skúška $ foo = "bar"], čo je "]" bez počiatku "[" .V tejto sluchae pomeschayut probelы Around vseh operátorov a vыdelyayut obyazatelnыe slovo "priestor", zamenyaya ego faktycheskoe priestranstvách, inak Ak nie je pomsta, to nie je srabotaet: Ak je priestor [SPACE "$ foo" SPACE = SPACE "bar" SPACE] Niektoré prijať membránu "==" na porovnávanie reťazcov. V prípade druhých je najlepšie použiť celé čísla "" alebo "-eq" pre celé čísla. Ako môžete vidieť, test je jednoduchý, ale výkonný nástroj na porovnávanie, ktorý je potrebný na to, aby shell fungoval. Samozrejme, že všetko nebude neskoro guru-Bash čítanie článku, ale bude istejšie a vyzbrojení potrebnými znalosťami a zručnosťami, aby ľahko vykonávať svoju prácu.

    Súvisiace publikácie