Bourne Again SHell - BASH

Co je to BASH?

Bash je shell vytvořený pro operační systémy GNU. Dnes je to jeden z nejpoužívanějších shellů na Linuxu.

Co je to shell?

Shell je program, který v unixových operačních systémech vytváří základní textové rozhraní mezi uživatelem a operačním systémem. Když si spustíte v Linuxu textovou konzoli, textový kurzor, který uvidíte, je vlastně součástí shellu, který tím dává uživateli na vědomí, že očekává příkazy. Základní funkčností shellu je spouštět uživatelské příkazy (většinou programy), ale dnešní shelly toho umí mnohem více. V unixovém světě neexistuje jediný shell, existuje jich poměrně hodně a vzájemně se liší ovládáním a schopnostmi, ačkoli základní funkcionalita je stejná. Všechny shelly umí pracovat jak v interaktivním, tak v dávkovém režimu.

Základní ovládání v interaktivním režimu

Bash umí nejenom spouštět příkazy, ale zároveň si umí pamatovat několik posledně vykonaných příkazů (běžně desítky, ale lze nastavit i více). Zkuste spustit pár příkazů a poté použijte klávesy šipka nahoru a šipka dolů.

K efektivnímu ovládání operačního systému je samozřejmě nutné znát systémové příkazy. Zde nabízím referenční stránku se základními Linuxovými příkazy a konstrukcemi skriptovacího jazyka bash:

Práce v dávkovém režimu

Ačkoli bash nabízí poměrně komfortní prostředky pro práci v interaktivním režimu, práce v dávkovém režimu, neboli vytváření skriptů, umožňuje mnohem efektivnější práci. Jazyk bash umí mnohem více než jenom spouštět příkazy. Lze v něm používat běžné řídící struktury (if, cykly, case, atd.), používat proměnné, či vytvářet obecnější podprogramy.

Shellové skripty není potřeba překládat, protože jde o jazyk interpretovaný. To znamená, že shell bere skript řádek po řádku a volá příkazy, které jsou zde zapsány. Skriptem se tedy rozumí obyčejný textový soubor, který obsahuje volání programů operačního systému. Aby systém poznal, který interpret má pro vykonání skriptu použít, je nutné napsat na první řádek skriptu cestu ke konkrétnímu interpretu. Běžně vypadá první řádek skriptu takto:

#!/usr/bin/bash

V některých systémech je ovšem program bash umístěn v jiném adresáři, proto je lepší použít tento fígl:

#!/usr/bin/env bash

Na dalších řádcích už může následovat kód, nebo komentáře (od znaku # do konce řádku). Malá ukázka:

#!/usr/bin/env bash
#
# Vypíše obsah aktuálního adresáře.
#

for name in *; do
  if [ -d $name ]; then
    echo "$name je adresář"
  else
    echo "$name je soubor"
  fi
done

Pokud tento skript uložíme pod jménem vypis.sh, lze jej spustit například takto:

eva ~> bash vypis.sh

Pokud z něj chceme udělat spustitelný příkaz, musíme mu nastavit příslušná práva souboru:

eva ~> chmod 755 vypis.sh

Teď je možné spustit příkaz z aktuálního adresáře nebo jej umístit do adresáře, který je v proměnné PATH. Spouštění z aktuálního adresáře vypadá takto:

eva ~> ./vypis.sh

Reference

Skriptovací jazyk bash je dobře dokumentován, takže nemá velký smysl, abych psal nový návod. Na internetu lze najít množství kvalitních příruček.


Poslední modifikace: 6. February 2006. Pokud v tomto dokumentu narazíte na chybu, dejte mi prosím vědět.