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ělNa 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.
