V Linuxu je konfigurace textová — nastavení služeb, sítě, uživatelů, přihlašování přes SSH, spouštění programů, to všechno jsou obyčejné textové soubory. A na serveru, kam se připojíš přes SSH, nemáš žádnou grafiku — žádný Poznámkový blok, žádné okno. Máš jen terminál. Proto musíš umět editovat soubory přímo v něm. Naučíš se dva editory: nano (přátelský, pro začátek) a vi/vim (survival minimum — je na úplně každém Linuxu). Až tohle zvládneš, přestane ti server nahánět hrůzu.
Pár pojmů na úvod
- Terminálový editor = program, který otevře soubor přímo v terminálu, bez okna a myši. Ovládáš ho klávesami — místo „klikni na Uložit" zmáčkneš kombinaci kláves.
- nano = jednoduchý, přátelský editor. Píšeš rovnou, nápověda je pořád vidět dole na obrazovce. Ideální pro začátek a na 90 % běžné editace.
- vi / vim = mocný editor, který je předinstalovaný úplně všude — i na holém minimálním serveru,
kde nano není.
vije původní,vim(Vi IMproved) je jeho vylepšená verze; ovládají se stejně. - Režim (mode) = stav editoru vi. Buď píšeš text (insert), nebo klávesy fungují jako příkazy (normal). Tohle je ta věc, o kterou začátečníci ve vi zakopnou nejvíc.
EDITOR/VISUAL= proměnné prostředí, které říkají systému, který editor spustit, když tě o editaci požádá nějaký program (třebagit commitnebocrontab -e).
Proč to musíš umět
Na desktopu si soubor otevřeš v grafickém editoru a hotovo. Jenže:
- Server nemá grafiku. Přihlásíš se přes SSH do textové konzole — jediné, co máš, je terminál.
- Konfigurace je textová.
/etc/fstab(disky),/etc/ssh/sshd_config(SSH server), unit soubory systemd,~/.bashrc,/etc/sudoers— všechno jsou textové soubory, které budeš během kurzu upravovat pořád dokola. - Rychlost. Otevřít soubor, změnit jeden řádek, uložit a zavřít — to v terminálu zvládneš za pár vteřin, aniž bys sundal ruce z klávesnice.
💡 Neuč se editory nazpaměť teď „do foroty". Nauč se odejít bez škody (hlavně z vi) a uložit jednu změnu — zbytek přijde praxí, protože configy budeš editovat celým kurzem.
nano — přátelský start
Otevřeš soubor prostě takhle:
nano poznamky.txt
Kurzor je rovnou v textu — píšeš normálně, jako v Poznámkovém bloku. Šipky fungují, Backspace maže. Žádné režimy, žádné triky.
⚠️ Nápověda je pořád dole na obrazovce. Vidíš tam řádky jako ^O Uložit nebo ^X Konec. Ten
stříška ^ znamená Ctrl — takže ^O = Ctrl+O, ^X = Ctrl+X. Nikdy si nemusíš pamatovat
zkratky, stačí kouknout dolů.
Nejdůležitější klávesy:
| Klávesa | V nápovědě | Co dělá |
|---|---|---|
Ctrl+O | ^O | Uložit (nano se zeptá na jméno → potvrď Enter) |
Ctrl+X | ^X | Konec (když je neuloženo, zeptá se, jestli uložit) |
Ctrl+W | ^W | Hledat text |
Ctrl+K | ^K | Vyjmout (smazat) celý řádek |
Ctrl+U | ^U | Vložit vyjmutý řádek zpět |
Ctrl+_ | ^_ | Skok na řádek (zadáš číslo řádku) |
Ctrl+G | ^G | Plná nápověda |
Typický postup uložení: napíšeš změny → Ctrl+O → nano dole ukáže jméno souboru → Enter potvrdí → Ctrl+X ukončí. Hotovo.
💡 „Uložit a zavřít" jde i zkratkou: rovnou Ctrl+X → nano se zeptá
Save modified buffer?→ zmáčkniY→ Enter. Dvě mouchy jednou ranou.
vi / vim — survival minimum
vi vypadá pro nováčka nepřátelsky, ale musíš ho aspoň přežít — je na každém Linuxu, i tam, kde nano prostě není nainstalované. Nejde o to stát se mistrem; jde o to umět otevřít, změnit, uložit a hlavně BEZPEČNĚ ODEJÍT.
⚠️ Klíč k pochopení vi jsou režimy. vi se po otevření spustí v normal režimu, kde klávesy nejsou text, ale příkazy. Když v tomhle stavu začneš psát, děje se chaos — mažou se řádky, skáče kurzor. To není rozbité, jen jsi ve špatném režimu.
vi /etc/hosts
| Situace | Klávesa | Co se stane |
|---|---|---|
| Chci psát text | i | Vstup do insert režimu (dole se objeví -- INSERT --) |
| Dopsal jsem | Esc | Zpět do normal režimu |
| Uložit | :w | Zapíše změny (jen v normal režimu!) |
| Konec | :q | Ukončí (jen když není nic neuloženo) |
| Uložit a konec | :wq | Uloží a ukončí (ZZ dělá totéž) |
| Konec BEZ uložení | :q! | Zahodí změny a odejde |
⚠️ :q! je THE příkaz, který si zapamatuj ze všeho nejdřív. Když se ti vi „zasekne", nevíš, co jsi
navyváděl, a chceš prostě pryč bez škody: zmáčkni Esc (pro jistotu do normal režimu), pak napiš
:q! a Enter. To je celé kouzlo — vždycky se dostaneš ven.
Pár dalších užitečných příkazů (v normal režimu):
| Klávesa | Co dělá |
|---|---|
h j k l | Pohyb kurzoru — vlevo, dolů, nahoru, vpravo (šipky obvykle taky jdou) |
dd | Smaže celý řádek |
/text | Hledá „text" (n = další výskyt) |
u | Undo — vrátí poslední změnu zpět |
x | Smaže znak pod kurzorem |
💡 Zapamatovací pomůcka na celý workflow:
i(píšu) →Esc(dopsal jsem) →:wq(uložit a jít) nebo:q!(zahodit a jít). S těmihle čtyřmi věcmi přežiješ vi kdekoli.
Kdy co použít
- nano na běžnou, rychlou editaci — je pohodlný a nic si nemusíš pamatovat.
- vi vždycky, když nano na daném stroji není (typicky holé servery, kontejnery, záchranné režimy). Proto stojí za to umět ho aspoň přežít.
Když tě nějaký program (git commit, crontab -e, visudo) požádá o editaci, spustí editor podle
proměnných EDITOR a VISUAL. Když ti naskočí vi a chtěl bys nano, nastavíš si:
export EDITOR=nano
export VISUAL=nano
Aby to platilo napořád, dá se to zapsat do ~/.bashrc (podrobně v kapitole o prostředí a proměnných).
sudo a systémové soubory
Soubory v /etc, unit soubory systemd a podobné patří rootovi. Když je zkusíš editovat jako běžný
uživatel, buď dostaneš rovnou „Permission denied", nebo (zákeřnější) soubor otevřeš, upravíš — a při
ukládání zjistíš, že nemáš práva zápisu. Napsal jsi změny do prázdna.
Proto systémové soubory edituj se sudo:
sudo nano /etc/hosts
sudo vi /etc/ssh/sshd_config
⚠️ Jedna výjimka, kterou NIKDY neporušuj: /etc/sudoers. Tenhle soubor řídí, kdo smí sudo. Když
ho upravíš ručně (sudo nano /etc/sudoers) a uděláš překlep, systém ho odmítne načíst a přijdeš o
sudo úplně — a přitom právě sudo bys potřeboval na opravu. Klasické zamčení se z domu s klíčem
uvnitř. Proto ho edituj výhradně přes visudo:
sudo visudo
visudo otevře sudoers v editoru, a při ukládání zkontroluje syntax — když najde chybu, nepustí tě
dál a nabídne opravu. Tím tě chrání před zamčením.
Failure modes — časté průšvihy začátečníků
- Zaseknutí ve vi. Otevřel jsi soubor, něco se děje, nevíš, jak ven. Řešení:
Esc, pak:q!a Enter — odejdeš bez uložení. Tohle je nejčastější panika a zároveň nejjednodušší fix. - Editace systémového souboru bez
sudo. Soubor jde otevřít a upravit, ale nejde uložit („Permission denied" / read-only). Otevři ho znovu sesudo. - Ruční editace
/etc/sudoers. Překlep = ztrátasudoa možná zamčený systém. Vždyvisudo— ověří syntax před uložením. - Zavření nano bez uložení. Zmáčkl jsi
Ctrl+X, na dotazSave modified buffer?odpovědělN— a změny jsou pryč. Čti dotazy dole na obrazovce, než odpovíš. - Editace „za běhu". Změníš config služby (třeba
sshd_config), ale samotná úprava souboru nic nezmění — služba si config načte, až ji přenačteš/restartuješ. Řeší se tosystemctl reload/restart(podrobně v kapitole o systemd a službách).
🛠️ Cvičení
- Založ a ulož v nano. Otevři nový soubor
~/pokus.txtv nano, napiš pár řádků, ulož ho a zavři. Pak ho otevři znovu a ověř, že text tam je. Kterými klávesami jsi uložil a kterými odešel? - Přežij vi. Otevři stejný soubor ve
vi ~/pokus.txt. Přepni se do insert režimu, přidej řádek, vrať se do normal režimu a ulož a ukonči. Které klávesy jsi použil v jakém pořadí? - Uteč z vi bez uložení. Otevři soubor ve vi, něco v něm naklikej/napiš tak, abys ho „rozbil", a pak z něj odejdi tak, aby se žádná změna neuložila. Ověř, že původní obsah zůstal netknutý.
- Systémový soubor a práva. Zkus jako běžný uživatel otevřít a upravit
/etc/hostsbezsudoa pokus se uložit. Co se stane? Pak to zopakuj sesudoa popiš rozdíl. - Bezpečný sudoers. Zjisti, proč se
/etc/sudoersneedituje přímo, a jakým příkazem se má editovat místo toho. Co ten příkaz udělá navíc oproti obyčejnémunano?
Náčrt řešení — rozbal, až si cvičení zkusíš sám
- nano ulož a zavři —
nano ~/pokus.txt, napíšeš text (píše se rovnou), Ctrl+O → Enter (potvrdí jméno) uloží, Ctrl+X zavře. Rychlejší varianta: rovnou Ctrl+X, na dotaz odpovíšYa Enter. Pozor:^v nápovědě dole znamená Ctrl, ne nějakou zvláštní klávesu. - vi ulož a ukonči — po otevření jsi v normal režimu; zmáčkni
i(insert, dole-- INSERT --), napiš řádek,Esczpět do normal, pak:wq+ Enter (uloží a ukončí). Pozor::wfunguje jen v normal režimu — kdybys ho psal v insert, jen se napíše do textu. - Útěk z vi —
Esc(pro jistotu do normal režimu), pak:q!+ Enter. Vykřičník znamená „zahoď změny a odejdi". Původní soubor zůstane nezměněný. Pozor::qsamotné vi odmítne provést, dokud máš neuložené změny — proto ten!. - Systémový soubor — bez
sudo(nano /etc/hosts) soubor většinou otevřeš, ale při ukládání dostaneš „Permission denied" / soubor je read-only — nemáš právo zápisu, patří rootovi. Sesudo(sudo nano /etc/hosts) běžíš s právy roota, uložení projde. Pozor: úprava bez práv se ti může „ztratit" — proto systémové věci rovnou přessudo. - sudoers přes visudo —
/etc/sudoersřídí, kdo smísudo; překlep v něm může zablokovatsudopro všechny a zamkneš se ze systému. Edituj ho příkazemsudo visudo, který při ukládání zkontroluje syntax a při chybě tě nepustí dál (nabídne opravu). Pozor: nikdynano /etc/sudoersnapřímo —visudoje pojistka, ne formalita.
🧠 Otázky & odpovědi
Proč musím umět editovat soubory přímo v terminálu?
Protože v Linuxu je konfigurace textová (disky, síť, SSH, služby, .bashrc, sudoers) a na serveru,
kam se připojíš přes SSH, nemáš žádnou grafiku — jen textovou konzoli. Žádný Poznámkový blok tam
nespustíš. Terminálový editor je tedy jediný způsob, jak na dálku upravit nastavení. Naučíš se nano
(pohodlný start) a vi (survival, protože je úplně všude).
Jak se dostanu ze zaseknutého vi, když nevím co dělám?
Zmáčkni Esc — tím se dostaneš do normal režimu (i kdyby ses omylem psal text). Pak napiš :q!
a stiskni Enter. Vykřičník znamená „ukonči a zahoď všechny změny", takže původní soubor zůstane
netknutý. Tohle je nejdůležitější věc, kterou o vi vůbec můžeš vědět: vždycky se dostaneš ven bez škody.
Kdybys chtěl změny naopak uložit, je to :wq.
Co znamenají ty stříšky jako ^O v nano dole na obrazovce?
Stříška ^ znamená klávesu Ctrl. Takže ^O = Ctrl+O (uložit), ^X = Ctrl+X (konec),
^W = Ctrl+W (hledat). Nano ti tuhle nápovědu drží pořád na spodních dvou řádcích, takže si zkratky
nemusíš pamatovat — stačí kouknout dolů. Uložení proběhne tak, že po Ctrl+O nano ukáže jméno souboru
a ty ho potvrdíš Enterem.
Proč se /etc/sudoers nesmí editovat obyčejným editorem?
Protože /etc/sudoers řídí, kdo smí sudo. Když ho upravíš ručně a uděláš i drobný překlep, systém
ho odmítne načíst a přijdeš o sudo — přitom právě sudo bys potřeboval na opravu, takže se
efektivně zamkneš. Proto se edituje přes sudo visudo, který soubor při ukládání zkontroluje na
syntax a při chybě tě nepustí dál. Je to pojistka přesně proti tomuhle sebezamčení.
Změnil jsem config služby, ale nic se nezměnilo. Proč?
Protože samotná úprava textového souboru službu neovlivní — běžící služba má config načtený v paměti
z doby, kdy se spustila. Aby změnu vzala, musíš ji přenačíst nebo restartovat (systemctl reload
nebo systemctl restart <služba>). Editor jen změní soubor na disku; „aktivaci" změny řeší až systemd.
Podrobně v kapitole o systemd a službách.
