bash_úvod

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
bash_úvod [2012/07/18 20:18] ubuntubash_úvod [2019/02/25 18:21] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 +====== 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 18:21
  • autor: 127.0.0.1