Zobrazit stránkuStarší verzeZpětné odkazyNahoru Tato stránka je pouze pro čtení. Můžete si pouze prohlédnout zdrojový kód, ale ne ho měnit. Zeptejte se správce, pokud si myslíte, že něco není v pořádku. ====== Bash úvod ====== Bash je součástí Linuxu a jeho používání Vám značně usnadní Vaši práci v Linuxu. Při programování v jazyce Bash vytváříte vlastní skripty, které pak vykonávají nějakou akci. Tyto skripty se dají psát v libovolném textovém editoru v Linuxu, doporučuji používat [[Geany|Geany]]. Ve skriptu se používají buď již Vámi vytvořené skripty, nebo nástroje, které poskytuje přímo Linux. ====== Výstupy ====== {{.:info.png}} Každý program nebo skript vypisuje výsledky konání na výstup. V Linuxu rozlišujeme dva výstupy ''stdout - standardní výstup'' a ''stderr - chybový výstup''. Tyto výstupy jsou očíslovány ''1 standartní výstup'' a ''2 chybový výstup''. Pokud nám program v konzoli vypíše svůj výstup, tak se může zdát že to vypisuje stále stejně. To ovšem není pravda, program ''ls'' v konzoli vypíše seznam souborů do standardního výstupu, ale program ''strace ls'' ho vypíše do chybového výstupu, nicméně v konzole se zobrazí oba stejně. Proto je potřeba si uvědomit s kterým výstupem pracujeme. ====== Přesměrování ====== Každý výstup programu se dá také přesměrovat do souboru. Máme několik typů přesměrování:\ * **standartníVýstup > soubor** - standardní výstup programuje přesměruje do souboru. Pokud soubor neexistuje, tak se vytvoří a naplní daty, pokud existuje tak se přepíše novými daty. * **standartníVýstup >> soubor** - stejné jako v předchozím případě, ale pokud existuje soubor **nepřepíše** se, ale data jsou přidána na konec souboru * **chybovýVýstup 2> soubor** totožné s předchozími body, ale do souboru se nahraje chybový výstup místo standardního * **chybovýVýstup 2>> soubor** totožné s předchozími body, ale do souboru se nahraje chybový výstup místo standardního * kostrukce: **odkud** > **kam** nebo **kam** < **odkud**, neplést si s **rourou** ! * obdobně tedy fungují všechny příkazy pokud se použije **>** místo **<** a musí se samozřejmě prohodit strany **Příklady:**\ Výpis programu ls přesměrujeme do nově vytvořeného souboru pokus: <code> ls > pokus </code>Máme soubor pokus a tento soubor pošleme příkazu **nl**: <code> nl < pokus </code>Na konec souboru pokus přidáme volání **strace ls**: <code> strace ls 2>> pokus </code>Zkuste si změnit **> na >>** abyste lépe pochopili k čemu se přesměrování používá. ====== Roura ====== Roura je speciální typ souboru v Linuxu. Slouží k **přesměrování výstupu jednoho programu na vstup druhého programu**. V Linuxu se značí znakem ''|''.\ Roura implicitně přesměrovává **standardní výstup (1) na standardní vstup**.\ Konstrukce: <code> standartníVýstup | standartníVstup </code>Příklad: <code> ls | wc -l </code>Roura nemusí být jenom jedna, může jich být několik (**doporučuje se používat max. 7**): <code> ls | nl | wc -l </code> Pokud chceme přesměrovat **chybový výstup (2) na standardní vstup** použijeme následující konstrukci: <code> chybovýVýstup 2>&1 | standartníVstup </code>A pro pochopení na příkladu: <code> strace ls 2>&1 | wc -l </code>Kombinace: <code> strace ls 2>&1 | nl | wc -l </code> ====== Zacyklení / Program neodpovídá ====== {{.:info.png}} Jakýkoliv program se může zacyklit (**neustále provádí výpočty a nikdy se neukončí**) nebo může dojít k jeho pádu a program pak neodpovídá. Pokud pracujeme v konzoli a zdá se nám že výpočet trvá příliš dlouho, můžeme jej usmrtit. K tomu v Linuxu slouží klávesa **Ctrl+C**. ====== Spuštění programu na pozadí ====== {{.:info.png}} Pokud chcete spustí program na pozadí, tak se to provádí takto:\ <code> program & nebo ./program & </code>musíte dát za název spuštěného programu **mezeru** a znak **&**. Toto se používá např. u toho, že si spustíte přes terminál program **geany**. Program se Vám spustí, ale nedá se pracovat v terminálu až do té doby, než program **geany** ukončíte. Pokud ho ovšem spustíte na pozadí, s konzolí můžete pracovat souběžně s **geany**.\ {{.:warning.png}} Takto spuštěný proces Vám může ubírat výkon, nenechávejte takto běžet procesy, které nic nedělají. Jak ukončit proces se dozvíte v sekci [[http://wiki.ubuntu.cz/Bash%20%C3%BAvod#ps|ps]]. Pokud nějaký proces spustíte bez **&** na konci a náhle ho potřebujete přesunout na pozadí dělá se to stisknutím kláves **Ctrl+z**. Tím příkaz "**z**mrazíte" a získáte možnost zadat do konzole další příkaz. Zmrazený příkaz čeká na pozadí na vaše další pokyny.\ Na příkladu níže vidíte dlouhotrvající příkaz který zapisuje ''ping'' na ''seznam.cz'' do souboru ''odezvy.txt''. <code> bfu@lynx:~$ ping seznam.cz > odezvy.txt </code>Zmáčknu klávesy **Ctrl+z** a terminál mi napíše: \ <code> [1]+ Pozastavena ping seznam.cz > odezvy.txt bfu@lynx:~$ </code>Pokud chci, aby příkaz rozmrznul a dále pracoval, udělám to příkazem ''bg'', kterému jako parametr předám číslo v hranatých závorkách.\ <code> bfu@lynx:~$ bg 1 </code>Nyní můžu zadávat další příkazy. Seznam všech příkazů si vypíšu příkazem ''jobs'':\ <code> bfu@lynx:~$ jobs [1] Běží ping seznam.cz > odezvy.txt & [2]- Běží ping google.com > odezvy-google.txt & [3]+ Běží ping volny.cz > odezvy-volny.txt & </code>Na pozadí běžící příkaz ''ping volny.cz > odezvy-volny.txt'' přesunu do popředí , když do terminálu napíšu :-\2 <code> bfu@lynx:~$ fg 3 </code> ====== Nástroje linuxu ====== {{.:info.png}} Všechny programy mají naprogramované dva přepínače pro zobrazení nápovědy a to ''-h'' nebo ''--help''. Např. program ''ls'' byste pro výpis nápovědy zavolali jako ''ls -h'' nebo ''ls --help''. {{.:important.png}} Všechny následující programy se dají zkoušet a používat pouze v terminálu ! ===== ls ===== Slouží k zobrazení souborů aktuálního adresáře. * ''ls -a'' zobrazí i skryté soubory (**soubory a adresáře začínající tečkou**) * ''ls -l'' zobrazí seznam souborů jako seznam * ''ls -la'' kombinace obou předchozích metod Použití: <code> ls -al </code> ===== echo ===== Slouží k výpisu textu na obrazovku. * ''echo "ahoj"'' vypíše na obrazovku ''ahoj'' a odřádkuje výstup * ''echo -n "ahoj"'' vypíše na obrazovku ''ahoj'' * ''echo -e "ahoj\nnazdar"'' vypíše na obrazovku ''ahoj'', odřádkuje výstup, vypíše ''nazdar''. Znak ''\n'' je tzn. * pro výpis textu se dají použít jak jednoduché tak složené apostrofy **escape sekvence** neboli znaky, které formátují obrazovku. Jejich krátký přehled: * ''\n'' - nový řádek * ''\t'' - vloží znak tabulátoru * ''\b'' - vloží znak backspace Použití: <code> echo -e -n 'Hello world ! \nTest echa !' </code> ===== nl ===== Očísluje standardní vstup a na standardní výstup vypíše výsledek. Použití: <code> ls | nl </code> ===== clear ===== Smaže obrazovku terminálu. Použití: <code> clear </code> ===== wc ===== Vypíše počet znaků, slov a řádků standardního vstupu na standardní výstup. * ''wc -l'' zobrazí počet řádků standardního vstupu * ''wc'' program sám o sobě vypíše tři čísla, které vypočítal ze standardního vstupu. Jedná se (zleva doprava) o počet řádků, počet slov, počet znaků. Použití: <code> ls | wc </code> ===== df ===== Vypíše počet volného místa na všech discích. Použití: <code> df </code> ===== rm ===== Odstranění souborů na disku. * ''rm -f soubor'' - neptá se jestli se má smazat soubor (**opatrně při mazání souborů společně se sudo !**) * ''rm -r slozka/'' - rekurzivní mazání, smaže celou složku ''slozka'' včetně všech jejích souborů či složek Použití: <code> rm -fr nepotrebnaSlozka/ </code> ===== cal ===== Zobrazí kalendář a tučně zvýrazní aktuální datum. Použití: <code> cal </code> ===== date ===== Vypíše aktuální datum. * ''date '+Datum: %d/%m/%Y%nCas: %H:%M''' - předformátovaný výpis data. Pro význam zkratek viz ''date --help'' Použití: <code> date </code> ===== shutdown ===== Provádí operace vypnutí, restartování, odhlášení nad počítačem. Je nutné používat **sudo** !. * ''sudo shutdown -r 0'' restartuje počítač za 0 sekund * ''sudo shutdown -h 10'' vypne počítač za 10 sekund Použití: <code> sudo shutdown -r 0 </code> ===== ping ===== Zobrazí odezvu na zadaný server. * ''ping www.seznam.cz -c 4'' zobrazí výsledek odezvy na server **www.seznam.cz**. Bude se měřit 4 krát. Výsledek se zobrazí na standartní výstup když existuje server nebo se zobrazí na chybový výstup pokud server nenalezne. Použití: <code> ping www.seznam.cz -c 4 </code> ===== touch ===== Změní čas posledního přístupu k souboru. V případě, že soubor neexistuje, vytvoří ho. * ''touch soubor'' vytvoří soubor **soubor**, pokud neexistuje. Použití: <code> touch soubor </code> ===== mkdir ===== Vytvoří prázdnou složku. * ''mkdir slozka/'' vytvoří složku **slozka** Použití: <code> mkdir slozka/ </code> ===== rmdir ===== Odstraní zvolenou složku, ale tato složka musí být **prázdná** ! * ''rmdir slozka/'' odstraní složku **slozka** Použití: <code> rmdir slozka/ </code> ===== ps ===== Zobrazí seznam spuštěných procesů. * ''ps'' - zobrazí seznam procesů, které jsou aktuálně spuštěny v terminálu * ''ps -A'' - zobrazí seznam všech procesů běžících na počítači * ''ps -A > SeznamProcesu.txt'' - uloží seznam všech procesů běžících na počítači do textového souboru Použití: <code> ps -A </code> {{.:info.png}} U každého procesu je vlevo napsáno číslo, toto číslo označuje aktuální číslo procesu. Přes toto číslo se nejčastěji používá ukončení zvoleného programu. To provedete takto: <code> kill -9 čísloProcesu </code>Např. chci ukončit proces **firefox** a ten má číslo procesu **4098**: <code> kill -9 4098 </code> ===== Textové editory ===== Pro zpracování textu má Linux tři výborné programy: * [[Grep]] - vybírá řádek podle zadané předlohy * [[Sed]] - zpracování souborů a standardního výstupu * [[Awk]] - obdobně jako Sed, ale má víc možností ====== Shrnutí ====== Tento návod co jsem napsal tak doufám že Vám pomůže v začátcích používání konzole. Není úplný, protože celkový počet programů či nástrojů co nabízí linux je spoustu a jejich celkové rozebrání by zabralo spoustu času. Nejlépe se s těmito nástroji naučíte dělat až při psaní vlastních skriptů. Doporučuji Vám projít celou kategorii [[Bash a skripty]], hlavně pak část s skripty a to Vás naučí příkazovou řádku perfektně ovládat a psát vlastní užitečné skripty. Hodně zdaru při zkoušení a programování přeje Roman Makudera. ====== Odkazy ====== Poslední úprava: 2019/02/25 17:21autor: 127.0.0.1