Rozdíly

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

Odkaz na výstup diff

Následující verze
Předchozí verze
bash_úvod [2012/07/16 15:02]
Ubuntu vytvořeno
bash_úvod [2019/02/25 18:21] (aktuální)
Řá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
  • (upraveno mimo DokuWiki)