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.
Ú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říkazucd -) — 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-pvytvoří 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-rsmaže adresář rekurzivně, s-f
potlačí dotazy na potvrzení (force). Pozor:rmv 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
- Kde v souborovém systému FHS obvykle najdete konfigurační soubory
služeb a kde logy? - Jaký je rozdíl mezi příkazy
cp soubor cilamv soubor cil? - Co znamená v cestě
~,.a..? - Proč je potřeba dávat pozor při použití
rm -rfa čím se liší chování
rmv 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í.