Modul 1 — Základy Linuxu a příkazové řádky

2. Souborový systém, adresářová struktura, základní příkazy (ls, cd, cp, mv, rm)

Přehled adresářové struktury Linuxu (FHS) a nácvik základních příkazů pro pohyb a práci se soubory.

Odhadovaná délka studia: 55 minut · Stav: nehotovo

Technologie: Linux

Úvod a kontext

V předchozí lekci jsme si vysvětlili, proč je Linux základem DevOps praxe.
Teď je čas začít s ním skutečně pracovat. Naprostá většina úkolů na
serveru — od úpravy konfiguračního souboru přes kontrolu logů až po
nasazení aplikace — začíná orientací v souborovém systému. Tato lekce vás
naučí, jak je linuxový souborový systém uspořádaný a jak se v něm
pohybovat a manipulovat se soubory pomocí příkazové řádky.

Teorie

Vše je soubor

Jedním ze základních filozofických principů Unixu (a tedy i Linuxu) je
heslo "vše je soubor" (everything is a file). Nejen dokumenty a
programy jsou soubory — i zařízení (disky, terminály), procesy a síťová
rozhraní jsou v systému reprezentovány jako soubory, se kterými lze
pracovat jednotným způsobem.

Strom adresářů a FHS

Na rozdíl od Windows, kde má každý disk vlastní písmeno (C:, D:),
Linux má jeden jednotný strom adresářů začínající kořenovým adresářem
/ (tzv. root). Všechny ostatní disky, oddíly nebo síťová úložiště se do
tohoto stromu připojují (mountují) jako podadresáře.

Standard FHS (Filesystem Hierarchy Standard) definuje, k čemu slouží
jednotlivé adresáře v kořeni:

Adresář Účel
/bin, /usr/bin základní spustitelné programy pro všechny uživatele
/sbin, /usr/sbin systémové programy, typicky jen pro roota
/etc konfigurační soubory systému a služeb
/home domovské adresáře jednotlivých uživatelů (/home/petr)
/root domovský adresář uživatele root
/var proměnlivá data: logy (/var/log), fronty, cache
/tmp dočasné soubory, po restartu obvykle smazané
/opt volitelný software třetích stran
/proc, /sys virtuální souborové systémy s informacemi o běžícím jádru a procesech
/dev soubory reprezentující zařízení (disky, terminály)
/mnt, /media body pro připojení dalších disků/oddílů

Pro DevOps inženýra je klíčové vědět, že konfigurace služeb hledáme v
/etc (např. /etc/nginx/nginx.conf), logy v /var/log
(např. /var/log/syslog nebo /var/log/nginx/access.log) a dočasná data
v /tmp.

Absolutní a relativní cesty

Absolutní cesta začíná od kořene / a popisuje umístění jednoznačně
bez ohledu na to, kde se právě nacházíte, např. /etc/nginx/nginx.conf.

Relativní cesta je vztažená k aktuálnímu pracovnímu adresáři
(zjistíte ho příkazem pwd). Speciální zkratky:

  • . — aktuální adresář
  • .. — nadřazený (rodičovský) adresář
  • ~ — domovský adresář aktuálního uživatele (/home/petr)
  • - (u příkazu cd -) — předchozí adresář, ve kterém jste byli

Základní příkazy pro pohyb a práci se soubory

  • pwd — vypíše aktuální pracovní adresář (print working directory).
  • ls — vypíše obsah adresáře. Užitečné přepínače: -l (dlouhý formát s
    právy, vlastníkem, velikostí), -a (zobrazí i skryté soubory začínající
    tečkou), -h (velikosti v lidsky čitelném formátu), -t (seřadí podle
    data úpravy).
  • cd <cesta> — změní aktuální adresář (change directory).
  • mkdir <jméno> — vytvoří nový adresář; s -p vytvoří i chybějící
    nadřazené adresáře (mkdir -p a/b/c).
  • touch <soubor> — vytvoří prázdný soubor, nebo aktualizuje čas úpravy
    existujícího.
  • cp <zdroj> <cíl> — zkopíruje soubor; s -r (rekurzivně) kopíruje celé
    adresáře.
  • mv <zdroj> <cíl> — přesune nebo přejmenuje soubor/adresář (v Linuxu je
    přejmenování jen přesun v rámci stejného adresáře).
  • rm <soubor> — smaže soubor; s -r smaže adresář rekurzivně, s -f
    potlačí dotazy na potvrzení (force). Pozor: rm v Linuxu standardně
    nemá koš — smazání je nevratné.
  • find <cesta> -name "<vzor>" — hledá soubory podle jména v celém
    podstromu.
  • file <soubor> — určí typ souboru podle obsahu, ne jen přípony.

Praktický příklad

Typická sekvence příkazů při orientaci na novém serveru:

# Kde právě jsem?
$ pwd
/home/petr

# Co je v aktuálním adresáři? (i skryté soubory, dlouhý výpis)
$ ls -la
total 32
drwxr-xr-x  5 petr petr 4096 16. zář 09:12 .
drwxr-xr-x  3 root root 4096  1. zář 08:00 ..
-rw-r--r--  1 petr petr  220  1. zář 08:00 .bashrc
drwxrwxr-x  2 petr petr 4096 16. zář 09:10 projekty
drwxrwxr-x  2 petr petr 4096 16. zář 09:11 zálohy

# Přejdu do podadresáře
$ cd projekty
$ pwd
/home/petr/projekty

# Vytvořím strukturu pro nový projekt (i s chybějícími rodiči)
$ mkdir -p appka/config appka/logs

# Vytvořím prázdný konfigurační soubor
$ touch appka/config/app.conf

# Zkopíruji šablonu konfigurace se zachováním originálu
$ cp appka/config/app.conf appka/config/app.conf.bak

# Přejmenuji/přesunu soubor
$ mv appka/config/app.conf.bak appka/config/app.conf.backup

# Vrátím se o úroveň výš
$ cd ..
$ pwd
/home/petr/projekty

# Vrátím se do domovského adresáře pomocí zkratky
$ cd ~
$ pwd
/home/petr

# Najdu všechny .conf soubory v aktuálním adresáři a podadresářích
$ find . -name "*.conf"
./projekty/appka/config/app.conf

# Smažu zálohovací adresář, který už nepotřebuji (POZOR, nevratné!)
$ rm -r zálohy

Všimněte si výstupu ls -la — první sloupec (drwxr-xr-x) popisuje typ
souboru a přístupová práva. Tomuto tématu se budeme podrobně věnovat
v příští lekci.

Shrnutí

Linux používá jeden jednotný stromový souborový systém začínající kořenem
/, jehož struktura je definovaná standardem FHS (/etc pro konfiguraci,
/var/log pro logy, /home pro uživatelská data atd.). K pohybu a práci
se soubory slouží malá sada příkazů — pwd, ls, cd, mkdir, cp,
mv, rm, find — které tvoří naprostý základ každodenní práce na
serveru. Důležité je rozlišovat absolutní a relativní cesty a pamatovat,
že rm v Linuxu standardně maže nevratně.

Kontrolní otázky

  1. Kde v souborovém systému FHS obvykle najdete konfigurační soubory
    služeb a kde logy?
  2. Jaký je rozdíl mezi příkazy cp soubor cil a mv soubor cil?
  3. Co znamená v cestě ~, . a ..?
  4. Proč je potřeba dávat pozor při použití rm -rf a čím se liší chování
    rm v Linuxu od "koše" ve Windows?

Lekce na sebe nejsou zamčené — libovolnou lekci můžete otevřít i označit jako hotovou v jakémkoliv pořadí.