2

Operace se soubory a adresáři

Vytváření, mazání, kopírování a přesun souborů a adresářů

Procházet si svůj domovský adresář může být na začátku nuda, obzvláště, pokud v něm nic není. Naučíme se jak adresáře a soubory vytvářet, mazat, přesouvat a kopírovat

Nové adresáře a prázdné soubory

Následující ukázky příkazů obsahují ukázku parametru mezi < a >. To je opět konvence. Při zkoušení příkazů si tam doplňte sami vhodný název.

$ touch <soubor>

Příkazem touch (dotknout) vytvoříme prázdný soubor. Prozatím si nemusíme lámat hlavu k čemu nám je vytvářet prázdné soubory. Potřebujeme je jen, abychom viděli i něco jiného než adresáře. Za podivným názvem příkazu touch stojí jeho hlavní funkcionalita, a to aktualizace timestamp (časového údaje posledního přístupu k souboru). Toto uvádím jen pro úplnost a více se tím zabývat nemusíme.

$ mkdir <adresář>

Podobně jako v předchozím příkladu můžeme vytvořit adresář pomocí příkazu mkdir (make directory). Nabízí se nám i možnost vložit jako parametr celou delší cestu složenou z více adresářů. Pokud bychom však napsali např. mkdir faktury/2021, ale žádný adresář faktury bychom v pracovním adresáři neměli, nefungovalo by to. Tento nedostatek se však hravě opraví doplněním přepínače -p.

$ mkdir -p <adresář>/<podadresář>

Mazání souborů a adresářů

Pozor! Příkazová řádka nemá žádný koš! Cokoliv smažeme pomocí následujících příkazů se nedá nijak obnovit.

$ rm <soubor>

Prostě odstraníme soubor (remove). V některých prostředích se však může příkaz rm volat ve skutečnosti jako rm -i, kde se nám zobrazí otázka, jestli opravdu chceme tento příkaz odstranit a my na ni musíme odpovědět y (yes).

$ rmdir <prázdný adresář>

Tímto odstraníme adresář (remove directory). Pozor - příkaz funguje pouze na prázdné adresáře. Je to taková pojistka, abychom si omylem neodstranili něco, čeho bychom litovali. Pokud se v adresáři, který chceme smazat něco nachází, musíme to smazat jako první.

$ rm -r <adresář se soubory>

Jistě se vám taková pojistka zdá dost omezující. Vyřešit se to dá příkazem rm -r, který aplikujeme na adresář se soubory, který chceme smazat. Parametr -r znamená rekurzivně. Pod tímto slovem si představme, že se mazací operace aplikuje nejprve na vše co je uvnitř a pak na adresář samotný. A pokud se v tomto adresář opět nachází adresář s nějakým obsahem? Operace se zas opakuje. To je význam slova rekurze.

Poslední věc z oblasti mazání souborů a adresářů je velmi silná kombinace:

$ rm -rf <adresář se soubory>

Tento příkaz rekurzivně smaže vše co mu předhodíme a na nic se nás ptát nebude (-f znamená force)

Příkazy pro vytváření a mazání umí pracovat i s více parametry. Pokud chceme naráz vytvořit více souboru příkazem touch nebo více adresářů příkazem mkdir, můžeme jejich názvy naskládat jako parametry příkazové řádky za sebe spustit jedním stiskem klávesy Enter. Stejně funguje i jejich mazání pomocí rm či rmdir.

Kopírování a přesun

Poslední základní znalost práce se soubory a adresáři v linuxové příkazové řádce spočívá v jejich kopírování a přesouvání.

$ cp <soubor> <cíl>

Kopírování provádíme příkaze cp, který má dva povinné parametry a to, soubor, který chceme kopírovat a kam to chceme nakopírovat (do jakého adresáře).

Alternativně funguje tento příkaz k vytvoření kopie souboru, pokud jako parametr cíl není zvolen existující adresář, ale nový název souboru.

$ cp -r <adresář> <cíl>

Podobně jako u mazání příkaz cp automaticky nepřesouvá celé adresářové struktury. Pokud toho chceme docílit musíme použít parametr -r (kopíruj rekurzivně).

$ mv <zdroj> <cíl>

Příkaz mv má dvě základní funkce:

  • Přesun souboru nebo adresáře do jiného adresáře (move), pokud je cíl existující adresář
  • Přejmenování souboru nebo adresáře na cílové jméno

U příkazů pro kopírování a přesun může být parametrů co se má kopírovat více, jak poslední musí být vždy cílový adresář.

Jak to hezky zobrazit

$ tree

Pokud se vám zdá že práce se soubory a adresáři je v prostředí příkazové řádky nesmírně nepřehledná věc, vyzkoušejte příkaz tree, který vám vytiskne obsah všech adresářů v nižších úrovních do přehledné stromové struktury. Pokud příkaz tree ve svém prostředí nemáte, budete si ho muset doinstalovat.

Cvičení

1

Vytváření adresářů

pohodička

Dostali jste za úkol vytvořit ve vašem domovském adresáři adresář data, v něm podadresáře s názvy posledních tří let: 2021, 2020, 2019. V každém adresáři vytvořte podadresáře pro každý kvartál: Q1, Q2, Q3, Q4.

Výsledný obsah adresáře data má vypadat:

.
├── 2019
│   ├── Q1
│   ├── Q2
│   ├── Q3
│   └── Q4
├── 2020
│   ├── Q1
│   ├── Q2
│   ├── Q3
│   └── Q4
└── 2021
    ├── Q1
    ├── Q2
    ├── Q3
    └── Q4
2

Přesouvání adresářů

pohodička

Váš šéf si rozmyslel, že nechce sledovat data po kvartálech, ale podle pololetí. Upravte strukturu na:

.
├── 2019
│   ├── H1
│   └── H2
├── 2020
│   ├── H1
│   └── H2
└── 2021
    ├── H1
    └── H2