Příkazová řádka je jakýsi most mezi uživatelem a linuxovým jádrem. Umožňuje nám spouštět programy, psát skripty, komunikovat s jádrem... To vše se skrývá za onou, pro mnohé fádní, command linou. My si dnes však ukážeme, že i taková příkazová řádka může být nesmírně užitečný a rychlý nástroj, který nám usnadní práci se systémem. Nuže, pusťme se do toho...
Historie UNIXové příkazové řádky je stará jako počítače samotné. Dávno před érou PC běžely na nejrůznějších platformách různé klony unixových systémů. Svoji oblibu získaly především pro svou rychlost, stabilitu a vyzrálost. Tuto vyzrálost objevíme i na naší linuxové stanici.
V dnešní době je asi nejpoužívanějším interpretem (program, který zpracovává příkazy uživatele) BASH. Bash pochází z projektu GPL a je tedy dostupný zdarma, včetně zdrojových kódů. Jeho název je složen ze slov Bourne Again Shell. Mezi další oblíbené shelly (jak se také příkazovému řádku říká) patří sh, csh, zsh nebo tcsh. Rozdíly mezi jednotlivými interprety jsou různé, většinou však nepříliš velké.
Předpokládejme tedy, že máte přístup k bashi a na obrazovce Vám bliká výzva k zadávání příkazů. Dříve, než se vrhneme na roury a přesměrování, začneme jednochými a možná i zábavnými přikazy. Pro zjístění Vašeho operačního systému zkuste napsat uname a stiskněte enter. Pokud jste tam, kde jste, mělo by se Vám vypsat mýtické slovo Linux. Pro výpis všech základních informací zkuste zadat uname -a. Přepínač -a říká něco jako all. Nyní zkuste zadat df -h, no vida! Už víme kolik místa máme na disku.
Nyní se ale vrhněme na ony slibované roury a přesměrování. Abychom to zvládli, musíme si říct, že v linuxovém prostředí existují 3 základní virtuální soubory, které má otevřen každý program. Jsou to soubory reprezentující standartní výstup (stdout), standartní vstup (stdin) a standartní chybový výstup (stderr). Všechny jsou také označeny čísly počínaje nulou (pro stdin, 1 - stdout a 2 - stderr). Proč se o tom zmiňuji? Protože nyní nebudeme dělat nic jiného, než že si budeme hrát s oněmi vstupy a výstupy.
Přesměrování vstupů a výstupů
Představme si případ, kdy budeme chtít přeměrovat výstup nějaké aplikace do souboru, napříkad výpis adresáře do vypis.txt:
ls > vypis.txt
V tomto případě jsme použili operátor > pro přesměrování standartního výstupu. Jestli bychom naopak chtěli změnit standartní vstup (místo výchozí klávesnice), použili bychom operátor <. Přesměrování standartního chybového výstupu můžeme realizovat pomocí operátoru 2>. Zkuste například smazat neexistující soubor pomocí příkazu rm. Vypíše se Vám chybová hláška, která poukazuje na to, že daný soubor neexistuje. Nyní si zkuste přesměrovat chybový výstup do souboru chyba.txt:
rm soubor 2> chyba.txt
Možná narazíte i na situaci, kdy si nebudete přát cokoli vypisovat na obrazovku. V takovém případě přesměrujeme standartní výstup a standartní chybový výstup do souboru pomocí již zmíněných operátorů:
aplikace 1> stdout.txt 2> stderr.txt
Jak prosté, že?
Roury
Pod termínem roura si můžeme představit propojení dvou a více programů, které si předávají data. Vzpomeňme si na časy kdy jsme hrávali na tichou poštu, při ní se jedna informace předávala dál a dál, přičemž se občas stalo, že ji někdo pozměnil (byť neúmyslně). Podobně to funguje i při použivání rour, ačkoliv zde je pozměnění dat žádoucí. Vezměmě si předchozí příklad výpisu souborů a přidejme k němu požadavek na setřízení seznamu podle konce abecedy:
ls | sort -r > vypis.txt
Operátorem roury je | (tento znak bývá umístěn pod klávesou Backspace). Program tedy vypíše seznam souborů, tento seznam předá programu sort (parametr -r je zde kvůli inverznímu třídění) a tomuto programu přesměrujeme výstup do souboru vypis.txt.
Nemusíme se však omezovat pouze na jednu rouru. Můžeme vytvořit celý řetězec propojených programů. Tomuto řešení se obecně říká, že postávíme kolonu rour. Opět následuje praktická ukázka. Nechť soubor vety.txt obsahuje řádky s různými větami. My budeme chtít zobrazit jen ty věty, ve kterých se vyskytuje slovo "ale", tyto věty pak dále seřadíme podle abecedy a omezíme výpis na posledních 5 vět. Výsledek operace přesměrujeme do souboru vysledek.txt. Zde je řešení:
cat vety.txt | grep -i ale | sort | tail -n 5 > vysledek.txt
Jen pro úplnost doplním, že příkaz grep zobrazí pouze řádky obsahující slovo "ale" (nehledí se na velikost písmen [-i]). Sort je pak setřídí a tail -n vypíše posledních 5 řádků. Sexy příkaz, který demonstruje možnosti kolon.
Závěr
Snad jste se dozvěděli dalších pár poznatků ze světa Unixo-linuxového. Vězte, že nic dalšího v tomto díle nenajdete :) Na další zábavu se však můžete těšit v některém z dalších pokračování, ve kterém by jsme se porozhlédli po nápovědě (manuálové stránky) a příkazech pro správu účtů a hesel.
Nashledanou u dalšího pokračování!