Bash a shellové skripty v Linuxu

Pro pochopení, Bash je jeden z několik unixových shellů. Myslím, že ten nejrozšířenější a nejznámější. Podporuje i některé konstrukce, které z něj však dělají plnohodnotný programovací jazyk určený k psaní skriptů (kromě samotných příkazú). Unixových skriptů. Hlavu bych za to nedal, ale je to něco jako DOSovské BAT soubory. Stejně jako ty DOSovské skripty lze i ty Unixácké snadno spouštět (a samozřejmě také upravovat) a oproti jiným programovacím jazykům umožňují rejpat se v celém počítači, od souborů na pevném disku až po datum a čas. Bashové skripty jsou totiž primárně tvořeny většinou linuxovými příkazy.

Takovéto skripty by nám v celku k ničemu nebyly (asi těžko bychom vytvářeli soubor s názvem „Zadejte váš věk:“ a pak jej pomocí příkazu ls (výpis obsahu adresáře) nechali vypsat na obrazovku, jakožto oznámení obsluze, aby zadala svůj věk), tak nám kromě pánaboha při tvorbě skriptů pomáhají základní příkazy jazyka Bash. Toto není návod na psaní skriptů (toho je plný internet – obzvláště linuxácké portály) a tak zmíním například příkaz echo (=ozvěna; co mu zadáte jako parametr, to vám vrátí na obrazovku – klasický vypisovací příkaz) a jeho protějškem je příkaz read. Tyto příkazy se nastavují klasickými „pomlčkovými“ parametry, takže echo -n "Jméno: " díky prvnímu parametru po vypsání textu neprovede odřádkování.

Pořád bychom toho asi ani moc nenapsali. Samozřejmě, že Bash umí i podmínky a cykly. Zajímavě funguje příkaz if – parametr podmínka se nevkládá do kulaté závorky jako v Céčku, ale do hranaté (a navíc je ohraničen mezerami). Na tom by nebylo nic až tak moc zvláštní, avšak zvláštností je to, že ona hranatá závorka je ve skutečnosti program (myslím, že ve skutečnosti je to symbolický odkaz na program test, ale to vcelku nehraje roli) jemuž dáváme parametry (například [ -e "Martin.txt" ] zjištuje, jestli soubor Martin.txt existuje.

Kromě těchto standartních vlastností umí i další. Kupříkladu velice šikovnou pomůckou jsou roury. Ty umí vzít výstup jednoho příkazu a poslat je rourou na vstup druhého. Takže příkazem calc provedeme nějaký složitější výpočet (Bash umí jen základní pětici matematických operací, zbytek se musí řešit jinak, což je celkem nevýhoda) a výsledek tohoto výpočtu pošleme na vstup mkdir a on nám vytvoří složku s názvem o dané číselné hodnotě jakoby v jednom příkazu a bez nějakého ukládání do proměnných. Naprosto úžasnou funkcí bashe je však snadné ukládání do souborů. Prostě výstup souboru přesměrujete do ‚názvu souboru‘ a ono to tam pošle. Nejsou třeba žádné inicializace souborů, kontroly existence a tak (ale musíte mít k zápisu do souboru patřičná přístupová práva).

Je třeba si uvědomit, že v linuxu to buďto vyjde a nebo ne a pak je to v … na konci roury (obrazně řečeno). Každý příkaz vždy vrací číselnou hodnotu. Je-li nulová, pak vše proběhlo v pořádku. Je-li nenulová, pak byla někde chyba. K chybě patří i třeba překlep v zápisu parametrů, takže když při zápisu podmínky do hranaté závorky zapomenete oddělit název příkazu [ od jeho parametrů, vyhodnotí podmínku vždy jako nepravdivou, což programátorovi může ze začátku dělat problémy.

Abych to nějak shrnul, v Bashi se člověk opravdu vyblbne. Kdo je magor jako já, může si klidně napsat skript, který po připojení foťáku k počítači jej automaticky namountuje ( mount – příkaz, který po hardwarovém připojení zařízení jej připojí i softwarově), vytvoří v počítači složku s názvem dnešního data a zkopíruje tam všechny nové fotky a přitom vám bude v průběhu kopírování zobrazovat kolik ještě procent a času zbývá.

Napříkald můj kamarád si vytvořil program, který odešle zadaná klíčová slova na images.google, stáhne jeden z nelzeneách obrázků a nastaví vám jej jako pozadí plochy. Skript má 3 řádky (1.- odeslání požadavku na images.google.cz a vybrání obrázku, 2.-stažení obrázku, nastavení jako pozadí).

Já osobně v Bashi programuji raděj, než třeba v klasickém C. Jeden z důvodů je ten, že skripty není třeba kompilovat, jsou přímo připraveny ke spuštění, a druhak díky tomu, že syntaktické chyby, které vám kompilátor (myslím ten klasický, konzolový – gcc ) vyplivne jenom jako číslo řádku a stručný popis, kterému stejně málokdo porozumí. V Bashi se vám tato hláška objeví až přímo za chodu, takže přesně víte občas i víte, kde chybu hledat.

Bash prostě dokáže ušetřit čas, je to jazyk, který se hodí, prostě si můžete pěkně pohrát s celým systémem a to my Linuxáci máme přece tak rádi!

Zde je článek o mém skriptu C write ‚n‘ run, vývojovém prostředí pro jazyk C v textové konzoli.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..