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. Ve skriptu se používají buď již Vámi vytvořené skripty, nebo nástroje, které poskytuje přímo Linux.
Výstupy
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:
ls > pokus
Máme soubor pokus a tento soubor pošleme příkazu nl:
nl < pokus
Na konec souboru pokus přidáme volání strace ls:
strace ls 2>> pokus
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:
standartníVýstup | standartníVstup
Příklad:
ls | wc -l
Roura nemusí být jenom jedna, může jich být několik (doporučuje se používat max. 7):
ls | nl | wc -l
Pokud chceme přesměrovat chybový výstup (2) na standardní vstup použijeme následující konstrukci:
chybovýVýstup 2>&1 | standartníVstup
A pro pochopení na příkladu:
strace ls 2>&1 | wc -l
Kombinace:
strace ls 2>&1 | nl | wc -l
Zacyklení / Program neodpovídá
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í
Pokud chcete spustí program na pozadí, tak se to provádí takto:\
program & nebo ./program &
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.\
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 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 „zmrazí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
.
bfu@lynx:~$ ping seznam.cz > odezvy.txt
Zmáčknu klávesy Ctrl+z a terminál mi napíše: \
[1]+ Pozastavena ping seznam.cz > odezvy.txt bfu@lynx:~$
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.\
bfu@lynx:~$ bg 1
Nyní můžu zadávat další příkazy. Seznam všech příkazů si vypíšu příkazem jobs
:\
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 &
Na pozadí běžící příkaz ping volny.cz > odezvy-volny.txt
přesunu do popředí , když do terminálu napíšu :-\2
bfu@lynx:~$ fg 3
Nástroje linuxu
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
.
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 seznamls -la
kombinace obou předchozích metod
Použití:
ls -al
echo
Slouží k výpisu textu na obrazovku.
echo „ahoj“
vypíše na obrazovkuahoj
a odřádkuje výstupecho -n „ahoj“
vypíše na obrazovkuahoj
echo -e „ahoj\nnazdar“
vypíše na obrazovkuahoj
, odřádkuje výstup, vypíšenazdar
. 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í:
echo -e -n 'Hello world ! \nTest echa !'
nl
Očísluje standardní vstup a na standardní výstup vypíše výsledek.
Použití:
ls | nl
clear
Smaže obrazovku terminálu.
Použití:
clear
wc
Vypíše počet znaků, slov a řádků standardního vstupu na standardní výstup.
wc -l
zobrazí počet řádků standardního vstupuwc
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í:
ls | wc
df
Vypíše počet volného místa na všech discích.
Použití:
df
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žkuslozka
včetně všech jejích souborů či složek
Použití:
rm -fr nepotrebnaSlozka/
cal
Zobrazí kalendář a tučně zvýrazní aktuální datum.
Použití:
cal
date
Vypíše aktuální datum.
date '+Datum: %d/%m/%Y%nCas: %H:%M
' - předformátovaný výpis data. Pro význam zkratek vizdate –help
Použití:
date
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 sekundsudo shutdown -h 10
vypne počítač za 10 sekund
Použití:
sudo shutdown -r 0
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í:
ping www.seznam.cz -c 4
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í:
touch soubor
mkdir
Vytvoří prázdnou složku.
mkdir slozka/
vytvoří složku slozka
Použití:
mkdir slozka/
rmdir
Odstraní zvolenou složku, ale tato složka musí být prázdná !
rmdir slozka/
odstraní složku slozka
Použití:
rmdir slozka/
ps
Zobrazí seznam spuštěných procesů.
ps
- zobrazí seznam procesů, které jsou aktuálně spuštěny v terminálups -A
- zobrazí seznam všech procesů běžících na počítačips -A > SeznamProcesu.txt
- uloží seznam všech procesů běžících na počítači do textového souboru
Použití:
ps -A
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:
kill -9 čísloProcesu
Např. chci ukončit proces firefox a ten má číslo procesu 4098:
kill -9 4098
Textové editory
Pro zpracování textu má Linux tři výborné programy:
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.