1. Home
  2. Začínáme
  3. Základy práce se soubory a složkami v linuxovém příkazovém řádku Shell
  1. Home
  2. Užitečné návody
  3. Základy práce se soubory a složkami v linuxovém příkazovém řádku Shell
  1. Home
  2. Cloud a servery
  3. Základy práce se soubory a složkami v linuxovém příkazovém řádku Shell

Základy práce se soubory a složkami v linuxovém příkazovém řádku Shell

Linuxový příkazový řádek (shell) WebSupport pro svůj hosting poskytuje jako SSH nebo webovou konzoli, ve které můžeme pracovat pomocí moderního webového prohlížeče jako je například Google Chrome, nebo Mozilla Firefox.

Tento návod můžete stejně použít pro používání linuxového operačního systému i na serverových a cloud službách.

Právě použitím webového prohlížeče získáte přístup k linuxovému příkazovému řádku (shellu) z prostředí, které funguje nezávisle na operačním systému. Přístup k datům, tedy souborům a adresářům pomocí příkazového řádku je velmi rychlý a efektivní.

Tento návod popisuje příkazový řádek, který reprezentuje Bash. Jde o příkazový shell interpreter naprogramovaný v rámci projektu GNU. Název je akronym k názvu Bourne again shell – je založený na Bourne Shell (bsh), což byl nejpoužívanější unixový shell.

Klávesové zkratky

Nejdřív se podíváme na klávesové zkratky, díky kterým dokážeme některé operace v linuxovém příkazovém řádku výrazně zrychlit. Ty se mohou v některých operačních systémech odlišovat.

PříkazPopis
Ctrl + Shift + C
Shift + Insert
Vloží zkopírovaný text (pozor, klávesová zkratka Ctrl + C slouží na ukončení programu)
TabPři psaní příkazu doplní ostatní písmena příkazu nebo název souboru či složky
Šipka nahoru
Šipka dolů
Vypíše příkaz ze seznamu historie (příkaz history), ale nespustí ho
Ctrl + RVyhledávání v historii příkazů (historii zobrazíme pomocí příkazu history)
!!Spustí předešlý příkaz (např. s právy administrátora/roota: sudo !!)
!nSpustí příkaz číslo n (za písmeno n dosadíme pořadové číslo zjištěné z příkazu history)
Ctrl + APřesune kurzor na začátek řádku (většinou funguje i klávesa Home)
Ctrl + EPřesune kurzor na konec řádku (většinou funguje i klávesa End)
Ctrl + ZSpuštěný program přenese do pozadí (stejně jako znak & za příkazem)
Alt + BPřesune kurzor o jedno slovo dozadu (Back)
Alt + FPřesune kurzor o jedno slovo dopředu (Forward)
Ctrl + UVymaže všechny znaky před kurzorem
Ctrl + KVymaže všechny znaky za kurzorem
Ctrl + WVymaže jedno slovo před kurzorem
Alt + DVymaže jedno slovo za kurzorem
Ctrl + LVymaže celou obrazovku (stejně jako příkaz clear)
Ctrl + CUkončí spuštěný program (jako kdyby jsme klikli na křížek okna nahoře vpravo resp. vlevo)
Ctrl + DUkončí aktívní relaci (stejně jako příkaz exit)

Vytváříme soubory a složky

Pokud některé znaky na vaší klávesnici nebudete umět napsat, pomůže web znakynaklavesnici.cz

Všechny příkazy jsou zkratkou nebo krátkými slovy od stručného anglického popisu toho, co vlastně příkaz dělá. Například jeden z nejčastěji používaných příkazů je cd, což je zkratka anglického popisu change directory (změň složku).

Nejdříve se přesuneme do domovské složky jednoduchým krátkým příkazem change directory (cd) následovaným znakem vlnovka (~). Znak vlnovka v linuxovém příkazovém řádku vždy reprezentuje domovskou složku.

cd ~

Abychom si ověřili, jestli se opravdu nacházíme v domovské složce, použijeme příkaz print working directory (pwd):

pwd

Pokud jsme v domovské složce, vypíše se cesta /home/jmeno_uzivatele, přičemž namísto jmeno_uzivatele bude uvedené jméno aktuálně přihlášeného uživatele (např. Tibor). V této složce si pomocí příkazů make directory (mkdir) a touch vytvoříme 3 složky a 3 prázdné soubory, se kterými budeme pracovat.

mkdir test
touch test/soubor_1.txt
mkdir test/prazdna_slozka
mkdir test/neprazdna_slozka
touch test/neprazdna_slozka/soubor_2.txt
touch test/neprazdna_slozka/soubor_3.txt

Pomocí příkazu disk usage (du) a přepínače -a (jako all – čili zobraz všechno včetně souborů) vypíšeme strukturu složek ve složce test, kterou jsme právě vytvořili:

du -a test

Doteď jsme použili 5 příkazů (cd, pwd, mkdir, touch a du). Často se stává, že stejné příkazy používáme víckrát. Proto vznikl příkaz history, který nám vypíše všechny doteď spuštěné příkazy:

history

Každý použitý příkaz je v novém řádku, přičemž každý řádek je uvedený pořadovým číslem. Pokud si přejeme opět spustit poslední příkaz ze seznamu historie, stačí použít dva výkřičníky (první řádek). Když potřebujeme spustit příkaz s konkrétním pořadovým číslem, zadáme jeden vykřičník následovaný pořadovým číslem (druhý řádek – spustí první příkaz ze seznamu historie):

!!
!1

V seznamu historie můžeme díky klávesové zkratce Ctrl + R vyhledávat. Funguje to tak, že stlačíme klávesovou zkratku a následně píšeme text, který v seznamu historie chceme vyhledat.

Součástí příkazu někdy mohou být citlivé údaje jako například heslo. Spolu s citlivými údaji se však příkazy zapíšou do seznamu historie, a tak je odtud potřebujeme vymazat. Odstranit můžeme jednu položku (první řádek s přepínačem -d jako delete, čili vymazat položku číslo 5) nebo celou historii (druhý řádek s přepínačem -c jako clear, čili vymazat všechno). Po vymazaní je potřeba změny zapsat do souboru se seznamem historie (přepínač -w jako write, čili zapsat).

history -d 5 -w
history -c -w

Teď se přesuneme do složky test, ve které budeme pracovat se složkami a soubory. Stačí napsat cd t a stlačit klávesu Tab. Pokud se v aktuální složce nachází pouze jeden soubor a/nebo složka, jejíž název začíná na písmeno t, název bude automaticky doplněný (v našem případě) na test. Automatické doplnění se hodí například když složky a soubory mají dlouhé názvy.

cd test

Pracujeme se soubory a složkami

Vytvořili jsme strukturu složek a souborů ve složce test a teď s nimi můžeme pracovat. Pracovat se složkami a soubory znamená, že budeme jejich obsah zobrazovat, hledat a upravovat. Složky a soubory budeme kopírovat, přemisťovat, přejmenovávat a mazat. Archivování a komprimování složek a souborů jsme se věnovali v návodu Archivace a komprese souborů v Linuxu.

Ještě před prací se soubory a složkami však musíme získat přehled. Podíváme se tedy, které soubory a složky máme ve složce test k dispozici. Toho docílíme už známým příkazem du nebo v aktuální složce (v našem případě jde o složku test) příkazem ls (jako list, čili vypsat seznam složek a souborů). Přepínače -lah zabezpečí podrobný výpis (l jako long) všech složek a souborů (i skrytých s tečkou v názvu na začátku; a jako all) a velikost je uvedená v pro lidi snáze čitelné formě (h jako human readable).

ls -lah

Složky jsou od souborů většinou barevně odlišené. Pokud to tak není, potom podle prvního znaku bezpečně rozeznáme, jestli jde o složku (první znak je d) nebo o soubor (první znak je -).

Výše jsme vytvořili prázdný soubor subor_1.txt, do kterého teď vložíme text pomocí příkazu echo a lomených závorek (> a >>). Jedna závorka (první řádek) znamená, že se celý obsah souboru přepíše a dvě (druhý řádek) znamenají, že se text doplní na konec a původní obsah zůstane zachovaný:

echo "První řádek v souboru soubor_1.txt" > soubor_1.txt
echo "Druhý řádek v souboru soubor_1.txt" >> soubor_1.txt

Pomocí příkazu cat (z anglického concatenate) si ověříme, jestli se oba řádky do souboru soubor_1.txt doopravdy zapsaly:

cat soubor_1.txt

Kdybychom však potřebovali seřadit řádky abecedně, musíme nechat obsah souboru kromě zobrazení přes příkaz cat ještě i seřadit pomocí příkazu sort. Jinak řečeno, výstup příkazu cat pošleme jako vstup příkazu sort a získáme tak abecedně seřazený seznam řádků souboru soubor_1.txt. Výstup pošleme do vstupu přes “potrubí” (anglicky pipe), což je reprezentované znakem svislé čáry (|):

cat soubor_1.txt | sort

Jako vstup do třídícího příkazu sort můžeme poslat aj samotný obsah souboru pomocí opačně lomené závorky < a získáme tak stejný výstup jako v předešlém příkazu, ale s kratším zápisem (bez příkazu cat):

sort < soubor_1.txt

Často se stává, že soubor obsahuje velké množství řádků. Takový soubor stáhneme (první řádek) pomocí příkazu curl (z anglického Client URL). Ze staženého souboru tabulka.csv potřebujeme zobrazit pouze prvních 5 řádků (druhý řádek; head jako hlavička) a posledních 5 řádků (třetí řádek; tail jako chvost).

curl -o tabulka.csv https://file-examples-com.github.io/uploads/2017/02/file_example_CSV_5000.csv
head -n 5 tabulka.csv
tail -n 5 tabulka.csv

Celý obsah delšího dokumentu po částech zobrazíme pomocí příkazu less (první řádek), díky kterému stláčením klávesy mezerník stránkujeme a postupně prohlédneme celý obsah dokumentu. Klávesou Q ukončíme zobrazení obsahu přes příkaz less. Když potřebujeme obsah souboru i upravit, musíme ho načíst v textovém editoru (druhý řádek) jako je například nano. Co v textovém editoru nano upravíme, uložíme stlačením klávesové zkratky Ctrl + X, potom klávesy Y a nakonec klávesy Enter.

less tabulka.csv
nano tabulka.csv

Stáhli jsme si poměrně mnoho obsahu (tisíce řádků) do souboru tabulka.csv, ve kterém je těžké vyhledávat ručně. Řekněme, že bychom v souboru tabulka.csv chtěli zobrazit pouze ty řádky, které obsahují jméno Felisa. Toho dosáhneme příkazem grep (globally search for a regular expression and print matching lines, čili globálně hledej regulérní výraz a vypiš odpovídající řádky):

grep Felisa tabulka.csv

Je velmi důležité pravidelně vytvářet zálohy důležitých souborů (první řádek; cp jako copy). Někdy je vhodné zálohu i přejmenovat (druhý řádek mv jako move). Příkaz mv je speciální v tom, že slouží na přejmenování, ale též na přesunutí souboru (třetí řádek). No a případné nadbytečné soubory můžeme vymazat (čtvrtý řádek; rm jako remove).

cp tabulka.csv ./neprazdna_slozka/
mv ./neprazdna_slozka/tabulka.csv ./neprazdna_slozka/tabulka-zaloha.csv
mv ./neprazdna_slozka/soubor_2.txt soubor_2.txt
rm tabulka.csv

Souborů s koncovkou .txt už máme vícero a potřebujeme si vytvořit přehled, které jsou jak nazvané a v kterých složkách se nachází. Přesně na takové účely slouží příkaz find v kombinaci so zástupnými znaky jako otazník (nahrazuje jeden libovolný znak) a hvězdička (nahrazuje libovolný počet libovolných znaků). Pokud tedy potřebujeme najít všechny soubory s koncovkou .txt v aktuální složce (vyjádřený tečkou), použijeme zástupný znak hvězdička (první řádek). Všechny soubory, jejichž název začíná stejně, mají stejnou koncovku a liší se pouze jediným znakem (zde pořadovým číslem) najdeme pomocí příkazu v druhém řádku.

find . -name "*.txt"
find . -name "soubor_?.txt"

Složky mažeme příkazem rm s přepínačem -rf. Pozor, tento příkaz použijeme pouze tehdy, pokud s úplnou jistotou víme, co mažeme. Po spuštění takového příkazu na složce test v domovské složce (~) se totiž bez upozornění vymaže celou složku test i se všemi dalšími složkami a soubory. 

rm -rf ~/test

Kde najdeme další informace

Představené příkazy jsme si ukázali pouze v několika příkladech, ale možností využití existuje o mnoho více. V linuxovém příkazovém řádku je ještě jeden velmi často používaný příkaz man (zkratka od manual). Pokud například potřebujeme více informací o příkazu rm, stačí napsat man rm a zobrazí se podrobný manuál k příkazu rm, ve kterém se pohybujeme jako v příkazu less (mezerník a klávesa Q). Takto je možné do detailu studovat kterýkoliv příkaz linuxového příkazového řádku.

Shrnutí

Ukázali jsme, jak v linuxovém příkazovém řádku vytvořit soubory a složky. Zobrazili a upravili jsme obsah souborů. Přejmenovali, kopírovali, přemisťovali a mazali jsme soubory a složky. Též jsme si ukázali, jak se používají zástupné znaky, lomené závorky a svislá čára. No a abychom celé psaní urychlili, stláčeli jsme klávesové zkratky. Nakonec jsme si uvedli kvalitní zdroj dalšího podrobného studia o prezentovaných, ale i nezmíněných příkazech.

Aktualizováno: 18 května, 2022

Byl tento článek užitečný?

Related Articles

Zákaznická podpora
24 hodin denně, 7 dní v týdnu
KONTAKTOVAT PODPORU