Terminál je okno, do kterého píšeš příkazy. Shell je program, který ty příkazy čte a vykonává. Lidi to házejí do jednoho pytle, ale je to jako telefon (krabička v ruce) versus člověk na druhém konci (ten, kdo ti opravdu odpovídá). Jakmile ten rozdíl uvidíš, přestaneš se ztrácet v návodech, pochopíš, proč ti stejný příkaz jednou funguje a jindy ne, a hlavně — terminál se z „černé děsivé obrazovky" změní v nejrychlejší nástroj, jaký na počítači máš.
Pár pojmů na úvod
- Terminál (emulátor) = grafické okno, které ti zobrazuje text a bere klávesy. Sám o sobě nic neumí — jen předává, co napíšeš, dál. Konsole, GNOME Terminal, Alacritty, Kitty… všechno jsou emulátory terminálu (napodobují staré hardwarové terminály z dob, kdy počítač zabral celý sál).
- Shell = program uvnitř terminálu, který tvoje příkazy interpretuje a spouští. Nejčastěji bash nebo zsh. Tohle je ten „člověk na druhém konci", co ti rozumí.
- Prompt = ten text s
$na konci, kterým ti shell říká „jsem připraven, piš". Není součást příkazu — je to pozvánka. - TTY = původně fyzický terminál (teletype), dnes označení pro textovou konzoli. Přes
Ctrl+Alt+F3se dostaneš na „holé" TTY bez grafiky — užitečné, když ti zamrzne plocha (víc v kapitole o procesech). - Příkaz (command) = program nebo vestavěná funkce shellu, kterou spouštíš (
ls,cp,cd).
Terminál vs shell vs TTY — kdo je kdo
Tohle je nejčastější zdroj zmatku úplně na začátku, tak si to pořádně rozdělme.
| Vrstva | Co to je | Příklad | Analogie |
|---|---|---|---|
| Terminál | Okno, co zobrazuje text a bere klávesy | Konsole, GNOME Terminal | Sluchátko telefonu |
| Shell | Program, co příkazy čte a vykonává | bash, zsh, fish | Člověk, co ti odpovídá |
| TTY | Textová konzole bez grafiky | Ctrl+Alt+F3 | Přímá linka bez displeje |
Když otevřeš Konsole, děje se tohle: terminál (okno) spustí shell (bash), shell vypíše prompt
a čeká. Ty napíšeš ls, stiskneš Enter — terminál to pošle shellu, shell najde program ls, spustí
ho, a jeho výstup terminál zobrazí zpátky na obrazovku.
💡 Proč to vůbec rozlišovat? Protože můžeš měnit každou vrstvu zvlášť. Nelíbí se ti vzhled okna? Vyměníš terminál. Chceš chytřejší doplňování a barvičky? Vyměníš shell za zsh — okno zůstane stejné. A přes SSH se připojíš na vzdálený shell úplně bez terminálu na druhé straně.
Jak číst prompt
Prompt ti toho říká víc, než vypadá. Typicky vypadá takhle:
matej@thinkpad:~/projekty$
Rozebráno po kouskách:
matej— jméno uživatele, pod kterým jsi přihlášený.@— oddělovač, čti jako „na".thinkpad— jméno počítače (hostname). Poznáš tak, jestli jsi na svém stroji, nebo přes SSH na serveru.:— oddělovač.~/projekty— kde právě jsi (pracovní adresář).~je zkratka za tvůj domovský adresář (/home/matej).$— konec promptu, „piš sem".
$ vs # — tohle si zapamatuj
Poslední znak promptu prozrazuje, kdo jsi:
$= běžný uživatel. Můžeš dělat věci ve svém prostoru, ale ne zasahovat do systému.#= root (správce, superuživatel). Můžeš všechno — včetně smazání celého systému jedním překlepem.
Proto v návodech uvidíš příkazy uvozené $ nebo # — je to signál, s jakými právy je pouštět.
Znak sám neopisuj, je to jen značka promptu.
🚩 Když vidíš
#, buď ve střehu. Root nemá záchrannou brzdu:rmsmaže bez ptaní, žádný koš. Proto se pod rootem nezdržuj déle, než musíš — víc v kapitole o právech asudo.
Anatomie příkazu
Skoro každý příkaz má stejnou stavbu — jakmile ji jednou uvidíš, přečteš i příkaz, který jsi nikdy neviděl:
ls -l /etc
│ │ │
│ │ └─ argument (na čem to má pracovat)
│ └───── volba / přepínač (jak se to má chovat)
└──────── příkaz (co se má udělat)
- Příkaz — co chceš udělat (
ls= vypiš obsah adresáře). - Volby (přepínače) — mění chování. Začínají pomlčkou.
- Argumenty — na čem má příkaz pracovat (soubor, adresář, text).
Krátké vs dlouhé volby
Volby mají často dvě podoby — stejný účel, jiný zápis:
| Krátká | Dlouhá | Význam |
|---|---|---|
-l | (nemá) | dlouhý výpis (long) |
-a | --all | i skryté soubory |
-h | --human-readable | velikosti čitelně (KB, MB) |
-r | --recursive | i podadresáře |
- Krátké (
-l) se dají slučovat:ls -la=ls -l -a. Rychlé na psaní. - Dlouhé (
--all) jsou upovídané, ale čitelné — ve skriptech je preferuj, aby bylo za půl roku jasné, co dělají.
ls -l -a -h # tři krátké volby zvlášť
ls -lah # totéž, sloučené
ls --all --human-readable # dlouhá, sebedokumentující verze
⚠️ Na pořadí a mezerách záleží.
ls-l(bez mezery) shell hledá jako jeden neexistující příkaz.ls -l(s mezerou) je příkazlss volbou-l. Mezera odděluje slova — pro shell je posvátná.
Když nevíš — nápověda je vždy po ruce
Nikdo si nepamatuje všechny volby. Dobrý sysadmin není ten, kdo umí všechno zpaměti, ale ten, kdo si to umí rychle najít.
man příkaz— manuálová stránka. Kompletní, oficiální, ale hutná. Listuješ šipkami/mezerníkem, hledáš přes/slovo, ukončíš klávesouq.man lspříkaz --help— rychlý přehled voleb rovnou v terminálu. Kratší nežman, ideální na „jak se jmenovala ta volba".ls --helptldr příkaz— komunitní taháky: jen příklady použití, žádná teorie. Skvělé, když nechceš číst, ale vidět, jak se to reálně píše. (Balík se často jmenujetldrnebotealdeer, doinstaluješ ho.)tldr tar
💡 Pořadí, jak to použít v praxi: nejdřív
tldr(rychlý příklad) → nezabralo?--help(přehled voleb) → potřebuješ detail?man(úplná pravda). Tři úrovně od nejrychlejší po nejúplnější.
Efektivita — ať nepíšeš zbytečně
Tady se láme začátečník od někoho, komu terminál lítá pod rukama. Nejde o talent, jen o pár návyků.
Tab completion (doplňování tabulátorem)
Napiš pár písmen a stiskni Tab — shell dopíše zbytek. Funguje na příkazy, soubory i adresáře.
cd Doku<Tab> # doplní se na "Dokumenty/"
- Když je možností víc, stiskni Tab dvakrát — shell vypíše všechny varianty.
- Šetří to čas i chyby: co Tab doplní, to reálně existuje. Když se nedoplňuje, špatně píšeš cestu.
Historie příkazů
Shell si pamatuje, co jsi psal. Nemusíš to ťukat znovu:
- Šipka nahoru / dolů — procházíš předchozí příkazy.
Ctrl+R— reverzní hledání: začneš psát část příkazu a shell dohledá poslední, který ho obsahoval. ŽdímejCtrl+Rznovu pro starší shody, Enter pro spuštění.(reverse-i-search)`ssh': ssh matej@server!!— „ten úplně poslední příkaz". Zlatý poklad, když zapomenešsudo:dnf install htop # Permission denied sudo !! # spustí: sudo dnf install htophistory— vypíše celou historii;!123spustí příkaz číslo 123.
Editace řádku
Kurzor se nemusí courat šipkou přes celý řádek:
| Klávesa | Co udělá |
|---|---|
Ctrl+A | skok na začátek řádku |
Ctrl+E | skok na konec řádku (End) |
Alt+f / Alt+b | skok po slovech (v mnoha terminálech i Ctrl+←/Ctrl+→) |
Ctrl+U | smaže od kurzoru doleva (celý řádek před ním) |
Ctrl+K | smaže od kurzoru doprava |
Ctrl+W | smaže slovo vlevo |
Klávesové zkratky, které musíš znát
Tyhle nejsou o pohodlí — bez nich se v terminálu ztratíš, až něco „zamrzne". Neděsí se: nic nerozbiješ.
Ctrl+C— přeruš běžící program. Zabije to, co zrovna běží (výpis, který nekončí, zaseknutý příkaz). Tvoje první pomoc, když „to nejde ukončit".Ctrl+D— konec vstupu (end-of-file). Na prázdném promptu tě odhlásí ze shellu (zavře ho). Používá se i k ukončení programů, co čekají na vstup (třebacatbez souboru,python).Ctrl+Z— uspí program do pozadí (pozastaví ho). Vrátíš ho příkazemfg, necháš běžet v pozadí přesbg. (Víc o práci na pozadí v kapitole o procesech.)Ctrl+L— vyčistí obrazovku (jako příkazclear), ať máš klid a čistý start. Nic nemaže, jen posune výpis nahoru.
⚠️ Pozor na
Ctrl+CaCtrl+V. V terminálu nejsou vždycky kopírovat/vložit —Ctrl+Czabíjí program! Na kopírování se v terminálech často používáCtrl+Shift+C/Ctrl+Shift+V(nebo označení myší). Někdo si to přemapuje, ale výchozí chování je dobré znát.
Proč vůbec terminál, když je tu myš
Klikání je intuitivní. Tak proč se učit psát příkazy? Protože terminál umí věci, které myší nikdy nezvládneš:
- Skriptovatelnost. Sled příkazů uložíš do souboru a pustíš tisíckrát stejně. Nasadit web na 40 serverů klikáním? Šílenství. Jeden skript? Vteřiny. Terminál je automatizovatelný, myš ne.
- Vzdálený přístup. Server v datacentru nemá monitor ani myš. Připojíš se přes SSH a máš přesně ten samý shell jako doma. Grafika přes síť je pomalá a křehká; text lítá i přes mizernou linku.
- Přesnost a opakovatelnost. „Klikni na Nastavení, pak na třetí záložku…" — verze se mění, tlačítka
se stěhují. Příkaz
systemctl restart nginxznamená přesně jednu věc a bude fungovat stejně za pět let. Dá se zkopírovat do návodu beze zbytku. - Spojování nástrojů. Malé příkazy zřetězíš rourou (
|) do jednoho mocného řetězce — „vypiš procesy → vyfiltruj ty moje → seřaď podle paměti". Tohle je unixová superschopnost (víc v kapitole o rourách). - Rychlost. Zkušený člověk v terminálu předběhne myš o řády. Žádné hledání okna, žádné scrollování.
💡 Nejde o „buď anebo". Grafika je super na prohlížení a kreativní práci. Ale všechno, co má být spolehlivé, opakovatelné a vzdálené, patří do terminálu. Proto ho každý sysadmin žije.
Failure modes — časté omyly začátečníků
- „Terminál a shell je to samé." Není. Okno (terminál) jen zobrazuje; příkazy vykonává shell uvnitř. Můžeš je měnit nezávisle.
- „Opisuju i ten
$z návodu."$(ani#) není součást příkazu — je to značka promptu. Opisuješ jen to, co je za ní. - „Píšu příkaz bez mezery,
ls-l." Shell čte slova oddělená mezerami. Bez mezery hledá jeden neexistující příkazls-l. Mezera je oddělovač, ne dekorace. - „Terminál zamrzl, restartuju počítač." Většinou jen běží nějaký program. Zkus
Ctrl+C(přeruš), pakCtrl+D,q(vman/pageru) neboCtrl+L. Restart je až úplně poslední možnost. - „Nepamatuju si volby, takže to neumím." Nikdo si je nepamatuje.
--help,manatldrjsou součást řemesla, ne známka slabosti. - „
Ctrl+Czkopíruje.“ V terminálu často zabíjí program. KopírujCtrl+Shift+Cnebo myší.
🛠️ Cvičení
- Přečti svůj prompt. Otevři terminál a rozeber, co ti prompt říká: kdo jsi, na jakém stroji a
v jakém adresáři. Je na konci
$nebo#? Co by znamenalo, kdyby tam byl ten druhý znak? - Krátká vs dlouhá volba. Spusť
ls -aa pakls --all. Dostaneš stejný výsledek? Pak zkus sloučit tři krátké volby do jedné (-l,-a,-h) a ověř, že to dělá totéž jako napsané zvlášť. - Najdi nápovědu třemi způsoby. Ke stejnému příkazu (třeba
cp) si zobrazcp --help, pakman cp(a ukonči ho klávesouq), a pokud máš,tldr cp. Který ti nejrychleji řekl, jak se to používá? - Historie a
!!. Napiš nějaký příkaz, pak ho vyvolej šipkou nahoru. VyzkoušejCtrl+Ra napiš část toho příkazu. Nakonec zkus scénář: pustíš příkaz, který chce práva, a opravíš ho přessudo !!. - Zkrotit zaseknutý terminál. Spusť
ping localhost(běží donekonečna) a zastav ho. Pak spusťcatbez argumentu (čeká na vstup) a ukonči ho. Které klávesy jsi na to použil a proč jiné?
Náčrt řešení — rozbal, až si cvičení zkusíš sám
- Čtení promptu — v
matej@thinkpad:~$jematejuživatel,thinkpadhostname,~domovský adresář,$= běžný uživatel. Kdyby tam bylo#, jsi root (superuživatel) a smíš zasahovat do celého systému. Pozor:#= maximální opatrnost, root nemá koš ani „opravdu smazat?". - Volby —
ls -aals --alldělají přesně totéž, jen krátký vs dlouhý zápis. Sloučení:ls -lah=ls -l -a -h. Krátké volby jdou slepit za jednu pomlčku, dlouhé (--all) ne. Pozor: sloučit lze jen krátké jednopísmenné volby,--all-lje nesmysl. - Nápověda —
--helpdá rychlý přehled voleb,man cpúplný manuál (ukončíšq, listuješ mezerníkem, hledáš/slovo),tldr cpukáže rovnou příklady. Na „jak to použít" bývá nejrychlejšítldr. Pozor:tldrnení vždy nainstalovaný — doinstaluj balíktldr/tealdeer. - Historie — šipka nahoru vyvolá předchozí příkaz,
Ctrl+Rhledá v historii podle textu (opakujCtrl+Rpro starší shody).sudo !!spustí poslední příkaz ssudo— klasika, když zapomeneš práva. Pozor:!!vloží doslova poslední řádek, tak si ověř, co spouštíš, ať omylem nespustíš něco jiného. - Zaseknutý terminál —
ping localhostzastavíš přesCtrl+C(přeruší běžící program).catbez argumentu čeká na vstup z klávesnice; ukončíš ho přesCtrl+D(konec vstupu). Jsou to různé situace:Ctrl+Czabíjí běžící proces,Ctrl+Dříká „už nic nezadám". Pozor:Ctrl+Dna prázdném promptu tě odhlásí (zavře shell).
🧠 Otázky & odpovědi
Jaký je rozdíl mezi terminálem a shellem?
Terminál je okno, které zobrazuje text a bere klávesy — Konsole, GNOME Terminal, Alacritty. Sám nic nevykonává, jen přenáší. Shell je program uvnitř toho okna (nejčastěji bash nebo zsh), který tvoje příkazy čte a spouští. Analogie: terminál je sluchátko telefonu, shell je člověk na druhém konci, co ti odpovídá. Proto můžeš vyměnit shell (bash → zsh) a okno zůstane stejné — a naopak.
Co znamená znak $ versus # na konci promptu?
Prozrazuje, s jakými právy jsi. $ = běžný uživatel: smíš pracovat ve svém prostoru, ale ne
sahat na systém. # = root (superuživatel): smíš úplně všechno, včetně nevratného smazání
systému. Proto v návodech # znamená „tohle chce práva správce". Samotný znak neopisuješ — je to jen
značka promptu, ne součást příkazu. A pod rootem se zdržuj jen na nezbytně nutnou dobu.
Jak si rozklíčuju příkaz, který vidím poprvé?
Rozděl ho na tři části: příkaz volby argumenty. U ls -l /etc je ls příkaz (co se má stát),
-l volba (jak se má chovat) a /etc argument (na čem). Volby začínají pomlčkou: krátké jednopísmenné
(-l, dají se slučovat do -la) a dlouhé upovídané (--all). Když nevíš, co volba dělá, příkaz --help
nebo man příkaz to vysvětlí. Slova odděluje mezera — na ní záleží.
Terminál zamrzl a nereaguje — co s tím?
Nejspíš jen běží nějaký program a čeká. Zkoušej po řadě: Ctrl+C přeruší běžící příkaz (výpis,
co nekončí, zaseknutý proces); q ukončí man nebo pager (less); Ctrl+D ukončí program,
co čeká na vstup; Ctrl+L jen vyčistí obrazovku. Restart počítače je až úplně poslední možnost —
skoro vždy stačí jedna z těchhle kláves. „Zamrznutí" bývá jen program, který ještě neskončil.
Proč se učit terminál, když všechno jde naklikat?
Protože terminál umí, co myš neumí: automatizovat (příkazy uložíš do skriptu a pustíš tisíckrát
stejně), pracovat vzdáleně (přes SSH na serveru bez monitoru), být přesný a opakovatelný
(systemctl restart nginx znamená pořád totéž, tlačítko se přejmenuje) a spojovat nástroje rourou
do mocných řetězců. Grafika je fajn na prohlížení; ale všechno spolehlivé, opakovatelné a vzdálené
patří do terminálu. Proto ho každý sysadmin používá dennodenně.
