Souborový systém

FHS, / vs domov, absolutní vs relativní cesty.

V Linuxu není žádné „C:" a „D:". Existuje jeden jediný strom, který začíná u kořene / a všechno ostatní — domovy uživatelů, konfigurace, logy, programy, ba i disky a flashky, které připojíš — visí někde v tom stromě jako složky. Až pochopíš, kde co bydlí a proč, přestane ti být systém labyrint a stane se z něj mapa, ve které se orientuješ poslepu.


Pár pojmů na úvod

  • Kořen (root, /) = úplný začátek stromu. Není nad ním nic, všechno je pod ním. Pozor: „root" znamená v Linuxu dvě věci — tenhle kořenový adresář / a taky superuživatele (admina). Ze začátku matoucí, časem si zvykneš.
  • Adresář (directory) = to, čemu Windows říká „složka". V Linuxu se běžně řekne „adresář", je to totéž.
  • Cesta (path) = adresa souboru ve stromě, např. /home/anna/poznamky.txt. Oddělovač je lomítko / (ne zpětné \ jako ve Windows).
  • Mount (připojení) = akt, kterým se obsah disku (nebo flashky, síťové složky…) „napojí" do stromu na nějakou složku. Od té chvíle se do něj chodí jako do obyčejného adresáře.
  • FHS (Filesystem Hierarchy Standard) = dohoda, která říká, co má být v /etc, co v /var, co v /usr… Díky ní vypadá strom napříč distribucemi skoro stejně a ty víš, kam sáhnout.

Jeden strom, ne písmenka disků

Ve Windows má každý disk vlastní písmeno: systém na C:, druhý disk D:, flashka třeba E:. Když připojíš nový disk, přiskočí další písmeno a máš prostě víc oddělených „stromečků".

Linux to dělá naopak. Je tu jeden strom od kořene / a nové disky se do něj připojují (mount) jako složky. Druhý disk se ti může objevit třeba jako /mnt/data, flashka jako /run/media/anna/USB. Z pohledu chození po systému je to pořád jen adresář — nemusíš vůbec řešit, na kterém fyzickém disku zrovna jsi.

💡 Proto se v Linuxu neptáš „na kterém disku to je", ale „kde ve stromě to je". Fyzické disky jsou skryté pod logickou mapou — a to je záměr.


Co je v kořeni: mapa podle FHS

Když se podíváš do /, uvidíš hrstku adresářů s krátkými jmény. Nejsou náhodné — každý má svůj účel daný standardem FHS. Tady je ta nejdůležitější sada:

  • /home — domovy obyčejných uživatelů. Anna má /home/anna, tam patří její dokumenty, stažené věci a nastavení. Tohle je jediné místo, kam běžně zapisuješ bez admina.
  • /root — domov superuživatele (roota). Není v /home, je zvlášť rovnou pod kořenem. Nepleť si / (kořen) a /root (domov admina) — jsou to dvě různé věci.
  • /etckonfigurace celého systému, samý text. Kdo poslouchá na síti, kdo se smí přihlásit, jak se jmenuje počítač — to všechno bydlí tady (např. /etc/os-release, /etc/hosts).
  • /varproměnná data, co za běhu narůstají: hlavně logy (/var/log), fronty, cache, databáze. Když se plní disk, koukni sem první.
  • /usr — nainstalované programy a jejich data (aplikace, knihovny, dokumentace). Většina toho, co používáš, je fyzicky tady, i když to spouštíš krátkým jménem.
  • /bin, /sbinbinárky, tedy spustitelné příkazy. /bin základní pro všechny (ls, cp, cat), /sbin správcovské (mount, reboot). Na moderních distrech jsou to už jen odkazy do /usr.
  • /tmpdočasné soubory. Kdokoli sem smí psát, ale po restartu se to obvykle smaže. Nikdy sem neukládej nic, o co nechceš přijít.
  • /devzařízení: disky (/dev/sda), klávesnice, atd. jako soubory. Víc za chvíli.
  • /proc, /sysvirtuální okna do jádra: běžící procesy, nastavení kernelu. Na disku fyzicky nejsou, jádro je vyrábí za běhu.
  • /bootjádro a zavaděč (GRUB). To, co se načte hned po zapnutí, ještě než naběhne zbytek systému.

🚩 Nebudeš to umět zpaměti hned a nemusíš. Pravidlo palce: konfigurace → /etc, logy → /var/log, tvoje věci → /home, programy → /usr. S tímhle přežiješ 90 % situací.


Absolutní vs relativní cesta

Cesta k souboru může být zapsaná dvěma způsoby a je klíčové ten rozdíl chápat:

  • Absolutní cesta začíná lomítkem / a popisuje trasu od kořene. Funguje odkudkoli, protože je jednoznačná: /home/anna/poznamky.txt je pořád ten stejný soubor, ať stojíš kdekoli.
  • Relativní cesta začíná od místa, kde právě stojíš (aktuální adresář). Když jsi v /home/anna, tak poznamky.txt znamená totéž co absolutní /home/anna/poznamky.txt.

K relativním cestám patří čtyři zkratky, které musíš znát:

  • . (tečka) = „tady", aktuální adresář. ./skript.sh znamená „skript v téhle složce".
  • .. (dvě tečky) = „o úroveň výš", nadřazený adresář. Z /home/anna.. dostane do /home.
  • ~ (vlnovka) = můj domov. Pro Annu je ~ zkratka za /home/anna. ~/Stažené je její složka Stažené.
  • / (samotné lomítko) = kořen, začátek stromu.
cd /home/anna        # absolutní: skoč přesně sem
cd Dokumenty         # relativní: vejdi do Dokumentů uvnitř aktuálního adresáře
cd ..                # o úroveň výš
cd ~                 # domů (totéž jako samotné: cd)
cd /                 # do kořene

💡 Analogie: absolutní cesta je jako plná poštovní adresa („Praha, Hlavní 5"). Relativní je jako „vedlejší dveře" — má smysl jen podle toho, kde zrovna stojíš.


Jak se ve stromě pohybovat

Tři příkazy, se kterými se zorientuješ kdekoli:

pwd                  # print working directory — kde právě jsem?
cd /var/log          # change directory — přesuň se sem
ls                   # vypiš, co v aktuálním adresáři je
ls -la               # vypiš VŠECHNO včetně skrytého + podrobnosti

pwd je tvůj kompas: kdykoli se ztratíš, napiš pwd a systém ti řekne přesnou absolutní cestu, kde stojíš. cd tě přesouvá, ls ukazuje obsah.

Skryté soubory začínají tečkou. Soubor .bashrc (nastavení tvého shellu) ls normálně nezobrazí — je „skrytý" právě tou tečkou na začátku jména. Ukážeš ho až přepínačem -a (all):

ls           # .bashrc neuvidíš
ls -a        # teď ano — .bashrc, .config a spol.

Není to žádná ochrana ani tajnost — je to jen konvence, aby ti konfigurační soubory nepřekážely v běžném výpisu.


Připojení disku (mount) v kostce

Když strčíš flashku nebo přidáš disk, jádro o něm ví (uvidíš ho v /dev), ale ještě se do něj nedá chodit jako do složky. K tomu je potřeba ho připojit (mount) na nějaký bod ve stromě — tzv. mount point, což je prostě zvolený adresář.

Přirovnání: disk je knížka, mount point je poznámkový lísteček, kterým ji vlepíš do svého velkého šanonu. Od chvíle připojení otevřeš /mnt/data a čteš obsah disku, jako by tam ta data „byla odjakživa".

lsblk                        # ukaž disky a jejich připojení (přehledný strom)
mount                        # co všechno je právě připojené a kam

Na desktopu to za tebe udělá automaticky prostředí (flashka naskočí do /run/media/...). Na serveru to řešíš ručně nebo přes /etc/fstab (seznam, co se má připojit po startu) — k tomu se dostaneš později. Teď stačí chápat princip: připojení = vložení obsahu disku do stromu na zvolenou složku.


„Všechno je soubor" prakticky: /dev a /proc

V kapitole o Linuxu padlo, že „všechno je soubor". Tady to uvidíš na dvou konkrétních místech ve stromě:

  • /devzařízení jako soubory. Tvůj první disk je /dev/sda, druhý /dev/sdb, terminál /dev/tty. Existuje i /dev/null — černá díra, do které zahodíš cokoli, co nechceš vidět. Nejsou to data na disku, jsou to „dvířka" k hardwaru vystavená jako soubory.
  • /procinfo od jádra jako soubory. Pro každý běžící proces je tu složka pojmenovaná jeho číslem (PID). /proc/cpuinfo ti řekne o procesoru, /proc/meminfo o paměti — a čteš to obyčejným cat.
cat /proc/cpuinfo            # info o CPU — čteno jako obyčejný soubor
echo "nezajímá mě" > /dev/null   # zahoď výstup do černé díry

Kouzlo je v tom, že na tyhle úplně rozdílné věci (hardware, procesy, systémové informace) ti stačí stejné nástroje jako na obyčejný textový soubor. Žádné speciální API — jen cat, >, grep, less.


Failure modes — časté omyly začátečníků

  • „Hledám disk D." V Linuxu žádná písmena nejsou. Druhý disk je někde ve stromě (/mnt, /run/media) — najdeš ho přes lsblk, ne v „Tento počítač".
  • „Uložím si to do /tmp, ať to mám po ruce." /tmp se po restartu maže. Cokoli důležitého patří do ~ (domova).
  • / a /root je to samé." Není. / je kořen celého stromu, /root je domovská složka jednoho uživatele (admina).
  • „Napíšu cestu se zpětným lomítkem \." Windows reflex. V Linuxu je oddělovač normální lomítko /; \ má úplně jiný význam (escapování).
  • „Skrytý soubor = zabezpečený soubor." Tečka na začátku jména není zámek, jen konvence, ať výpis nepřekáží. ls -a ho ukáže komukoli.

🛠️ Cvičení

  1. Zorientuj se. Otevři terminál a zjisti, kde stojíš (pwd). Pak skoč do kořene, vypiš jeho obsah, a vrať se domů — pokaždé jiným způsobem než absolutní cestou. (Nápověda: cd, .., ~.)
  2. Přečti mapu. Vypiš obsah /etc, /var/log a /home. U každého řekni jednou větou, co bys tam čekal, že najdeš — a ověř, jestli to sedí.
  3. Odhal skryté. Ve svém domově spusť ls a pak ls -la. Kolik věcí přibylo a proč? Najdi soubor .bashrc a vysvětli, proč ho běžný ls neukázal.
  4. Zařízení a procesy jako soubory. Přečti /proc/cpuinfo obyčejným cat a v /dev najdi svůj disk. Jak to souvisí s „všechno je soubor"?
  5. Kdo je připojený. Spusť lsblk a najdi, který disk je připojený na / (kořen). Kdybys zapojil flashku, kde bys ji ve stromě čekal?
Náčrt řešení — rozbal, až si cvičení zkusíš sám
  1. Orientacepwd vypíše absolutní cestu, kde stojíš (typicky /home/tvojejmeno). Do kořene: cd /, výpis ls. Zpátky domů relativně/zkratkou: cd ~ nebo úplně holé cd (bez argumentu jde vždy domů), případně cd .. opakovaně. Pozor: holé cd = domů, to je užitečná zkratka, kterou si zapamatuj.
  2. Mapa/etc = konfigurační textové soubory systému (ls /etc), /var/log = logy (ls /var/log), /home = domovy uživatelů (ls /home). Sedí to podle FHS: config, proměnná data, uživatelské domovy. Pozor: do /etc a /var běžně zapisuje jen admin (root), ty tam většinou jen čteš.
  3. Skryté souboryls -la ukáže i položky začínající tečkou (.bashrc, .config) plus dvě speciální: . (tenhle adresář) a .. (nadřazený). .bashrc ls normálně skryje kvůli tečce na začátku jména — není to ochrana, jen konvence. Pozor: -a = all (včetně skrytých), -l = long (podrobnosti).
  4. Vše je souborcat /proc/cpuinfo vypíše informace o CPU, přestože žádný takový soubor na disku fyzicky není — jádro ho vyrábí za běhu. V /dev je disk např. /dev/sda. Obojí ukazuje, že hardware i info jádra jsou vystavené jako soubory, takže stačí cat. Pozor: /proc a /dev jsou virtuální, po rebootu se generují znovu, nezabírají místo na disku.
  5. Připojenílsblk vykreslí strom disků a v sloupci MOUNTPOINTS uvidíš, který oddíl je na /. Flashku bys po zapojení čekal na desktopu v /run/media/tvojejmeno/..., na serveru tam, kam ji ručně připojíš (často /mnt). Pozor: „vidět disk v /dev" ≠ „být připojený" — připojení je samostatný krok (mount).

🧠 Otázky & odpovědi

Proč v Linuxu nejsou písmena disků jako C: a D:?

Protože Linux má jeden jediný strom od kořene / a nové disky se do něj připojují (mount) jako složky, ne jako oddělené „stromečky" s vlastním písmenem. Druhý disk se objeví třeba jako /mnt/data, flashka jako /run/media/anna/USB. Výhoda: z pohledu chození po systému je všechno jen adresář a nemusíš řešit, na kterém fyzickém disku zrovna jsi — fyzická vrstva je schovaná pod jednou logickou mapou.

Jaký je rozdíl mezi absolutní a relativní cestou?

Absolutní cesta začíná lomítkem / a popisuje trasu od kořene — je jednoznačná a funguje odkudkoli (/home/anna/poznamky.txt je pořád ten stejný soubor). Relativní cesta začíná od místa, kde právě stojíš (aktuální adresář), takže její význam závisí na tom, kde jsi. Pomáhají zkratky: . = tady, .. = o úroveň výš, ~ = můj domov, / = kořen. Analogie: absolutní = plná poštovní adresa, relativní = „vedlejší dveře".

Co znamená připojit disk (mount)?

Že obsah disku (nebo flashky, síťové složky) napojíš do stromu na zvolenou složku — tzv. mount point. Od té chvíle do disku chodíš jako do obyčejného adresáře: otevřeš /mnt/data a čteš jeho obsah. Samotné „vidím disk v /dev" ještě neznamená, že se do něj dá chodit — připojení je samostatný krok. Na desktopu to udělá prostředí automaticky, na serveru to řešíš ručně nebo přes /etc/fstab.

Kam patří moje soubory, konfigurace a logy?

Drž se pravidla palce z FHS: tvoje věci → /home (např. /home/anna, zkratkou ~), konfigurace systému → /etc, logy → /var/log, nainstalované programy → /usr. /tmp je jen na dočasné soubory a po restartu se maže — nic důležitého tam nedávej. /root je domov admina (roota), ne totéž co kořen /. S touhle mapou trefíš, kam sáhnout, ve většině situací.