LINUX – přesměrování a roury Trocha teorie: Veškerá komunikace STDIN STDOUT STDERR
uživatelů a jednotlivých procesů v LINUXu probíhá přes vstupně/výstupní (I/O) kanály. standardní vstup (klávesnice) standardní výstup (monitor) standardní chybový výstup (monitor nebo soubor)
Ne vždy je ovšem požadován vstup/výstup na standardní zařízení. Často je možno setkat se s požadavkem výstupu do souboru nebo na tiskárnu místo na monitor, stejně tak je možno přesměrovat vstup dat pro nějaký program třeba ze souboru místo z klávesnice. Přesměrování I/O je možno pomocí operátorů : >,>>, 1> přesměrování výstupu (přepsání, přidání na konec) 2> přesměrování chybového výstupu &> přesměrování výstupu a chybového výstupu na jedno místo < přesměrování vstupu Přesměrování standardního výstupu: Standardní výstup je nejčastěji přesměrováván buď do souboru (to co se má objevit na monitoru je uloženo v souboru) nebo na jiné koncové zařízení : Použití : příkaz > cíl $ ls -l /tmp > vypis.txt $ ls -l /tmp >> vypis.txt $ cat vypis.txt $ fsck > /dev/null
[Enter] [Enter] [Enter] [Enter]
//výpis obsahu adresáře je uložen v souboru vypis.txt (je přepsán) //výpis obsahu adresáře je uložen na konec souboru vypis.txt //můžete se přesvědčit //spuštění programu fsck, přičemž jeho výstup na monitor je přesměrován do /dev/null (“černá díra“)
Přesměrování standardního vstupu: Standardní vstup je nejčastěji přesměrováván na program/proces, který data následně použije místo vstupu z klávesnice : $ mysql < prikazy.sql
[Enter]
//zašle serii příkazů uložených v prikazy.sql DB serveru MySQL
LINUX - přesměrování a roury Roura: Někdy je nutno výstup jednoho procesu použít jako vstup pro proces následující. K tomuto účelu slouží roury. Operátor pro rouru je | Použití : proces1 | proces2 [ | proces3 ....] $ ps aux $ ps aux | grep root $ ps aux | grep root | head -3
[Enter] //výpis běžících procesů [Enter] //výpis běžících procesů, které vlastní uživatel root [Enter] //výpis 3. prvních běžících procesů, které vlastní uživatel root
POZOR : Nepleťte si přesměrování a rouru ! Přesměrování je vždy chápáno jako “uložení do“ nebo “načtení z“. Oproti tomu u roury platí, že výstup z jednoho procesu je chápán jako vstup do procesu dalšího. $ ps aux | more $ ps aux > more
[Enter] //stránkovaný výpis běžících procesů [Enter] //uložení výpisu běžících procesů do souboru more
LINUX – užitečné příkazy a programy cat jako “editor“: Občas se dostaneme do situace, kdy chceme vytvořit nový soubor a zároveň do něj vložit nějaký obsah. Jednou z cest je použít příkaz cat jako primitivní editor. Příkazem cat > cilovy_soubor se shell přepne do interaktivního režimu, kdy je možno vkládat text, který se stane obsahem souboru cilovy_soubor. Ukončení vkládání dat a jejich uložení do souboru se provádí stisknutím Ctrl-D. Použití : cat > cílovy_soubor $ cat > jmena.txt Pepa Janacek Franta Jezek Saddam Husajn Jiri Paroubek Ctrl – D
[Enter]
$ cat jmena.txt ............
[Enter]
//budu vkládat seznam jmen do souboru jmena.txt
//režim vkládání skončí a data jsou zapsána do souboru
Další informace viz manuálová stránka příkazu (man cat);
//můžeme se přesvědčit
LINUX - užitečné příkazy a programy less: Vypsat obsah souboru delšího, než se vejde na monitor, je lepší pomocí příkazu less . Název je slovní hříčkou vzhledem k more (viz níže) a jeho použití je mnohem příjemnější: Použití : less [přepínače] soubor $ less
/etc/services
[Enter]
//pohodlný výpis souboru services z adresáře /etc
Nejužitečnější klávesové zkratky : - Ctrl-Q - šípky - PgUp, PgDn - / retezec - n,p
ukončení prohlížení pohybování v textu nahoru / dolů stránkování výpisu vyhledání textu retezec zobrazení dalšího /předešlého výskytu hledaného textu
Další informace viz manuálová stránka příkazu (man less). more: Vypíše obsah souboru na monitor po jednotlivých stránkách. V tomto výpisu je možno pohybovat se (listovat) pouze směrem dopředu. More je tzv. filtr a používá se často ve spojení s rourou: Použití : more [přepínače] soubor $ more
/etc/services
[Enter]
// výpis souboru services z adresáře /etc
Nejužitečnější klávesové zkratky : - Ctrl-Q - Enter - mezera
ukončení prohlížení pohybování v textu dolů po řádcích stránkování výpisu dolů
Další informace viz manuálová stránka příkazu (man more).
LINUX - užitečné příkazy a programy tail : Vypsat několik posledních řádek (standardně 10 )souboru : Použití : tail [přepínače] soubor $ tail $ tail -20
/etc/services /etc/services
[Enter] [Enter]
//výpis posledních 10 řádek souboru services z adresáře /etc //býpis posledních 20 řádek souboru services z adresáře /etc
Nejužitečnější přepínače : -n -f
kde n je číslo udávající počet vypsaných řádek výpis není ukončen, ale zastaví se a čeká, zda-li přibudou řádky nové a poté je vypíše (logy)
Další informace viz manuálová stránka příkazu (man tail). head : Vypsat několik prvních řádek (standardně 10 )souboru : Použití : head [přepínače] soubor $ head $ head -20
/etc/services /etc/services
[Enter] [Enter]
//výpis prvních 10 řádek souboru services z adresáře /etc //býpis prvních 20 řádek souboru services z adresáře /etc
Nejužitečnější přepínače : -n
kde n je číslo udávající počet vypsaných řádek
Další informace viz manuálová stránka příkazu (man head).