Lekce 7 - Linuxový terminál (Bash) - Práce se soubory

Vydávání, hosting a aktualizace umožňují jeho sponzoři.
V minulém dílu našeho seriálu o Linuxu jsme se naučili základní příkazy pro pohyb na disku pomocí Bashe (UNIXového shellu). Dnešním dílem budeme v Bashi pokračovat a věnovat se budeme práci se soubory.
Prohlížení souborů
less a nano
Často se nám bude stávat, že budeme chtít zobrazit nebo změnit obsah nějakého textového souboru. Mnoho souborů v Linuxu je totiž lidsky čitelných a používají se k uložení konfigurace. K zobrazování textových souborů můžeme použít program less. Spustíme ho jednoduše s parametrem souboru, který chceme zobrazit. Já mám na ploše nějaký XML dokument a právě ten v něm otevřu:


V textu se pohybujeme pomocí kurzorových šipek nebo PageUp/PageDown. Nápovědu k dalším příkazům zobrazíme pomocí klávesy h. Program ukončíme pomocí klávesy q.
Pro editaci nebo rozumnější zobrazování můžeme použít program nano. Ten lze spustit buď bez parametru nebo opět s parametrem souboru, který má otevřít. Na rozdíl od less zvýrazňuje syntaxi a umožní nám soubory vytvářet i editovat. Otevřeme tedy ten samý soubor v nano:


Ovládání nano je popsáno v jeho spodní liště. Stačí stisknout CTRL + jeden ze znaků, např. X pro ukončení.
file
Již víme, že Linux si neláme hlavu s příponou souborů a typ souboru poznává podle jeho obsahu, nikoli názvu. Libovolný soubor si můžeme nechat analyzovat příkazem file. Zkusme si to na několika souborech:

Manipulace se soubory a složkami
Zástupné znaky
V názvech souborů a složek můžeme používat zástupné znaky. Ty jsou následující:
- * - Označuje libovolný počet libovolných znaků
- ? - Označuje 1 libovolný znak
- [znaky] - Označuje jeden znak z vybraných možných
znaků. Znaky můžeme určit i pomocí následujících tříd, které píšeme
včetně závorek znovu do hranatých závorek:
- [:alnum:] - Alfanumerické znaky
- [:alpha:] - Abecední znaky
- [:digit:] - Čísla
- [:upper:] - Velká písmena
- [:lower:] - Malá písmena
- [!znaky] - To samé jako předchozí případ, pouze s negací. Označuje tedy jeden znak, který není mezi zmíněnými znaky.
Můžeme si zmínit několik ukázek:
- a*.txt - Všechny soubory s příponou .txt, které začínají na a.
- soubor.??? - Soubor s libovolnou třípísmennou příponou.
- log[ABC][[:digit:]][[:digit:]]* - Označí např. soubor logA21.log. Název souboru musí začínat na log, dále obsahovat A, B nebo C, 2 čísla a potom může obsahovat cokoli nebo může jeho název již skončit.
- [![:digit:]]* - Soubor, který nezačíná na číslo.
cp
cp (jako copy) zkopíruje zadané soubory nebo složky. Zkusíme si zkopírovat nějaký soubor a poté vypsat obsah složky, abychom viděli, že tam opravdu je:

Jako cestu můžete samozřejmě zadat i relativní nebo se zástupnými znaky.
Pokud zadáte soubor nebo několik souborů a poté složku, zkopírují se do této složky (zatím musí existovat):

Přepínače
I příkazu cp můžeme zadat jako první parametr přepínače.
- -i - Pokud kopírujeme nějaký soubor (např. 1. příklad: cp soubor.xml kopie.xml) a soubor s daným názvem již existuje, bude přepsán, aniž bychom tomu mohli zabránit nebo se to dokonce dozvěděli! Tomuto chování lze zabránit přepínačem -i (jako interactive), který si při existenci souboru od uživatele vyžádá potvrzení.
- -r - Pokud zadáme přepínač -r (rekurze), můžeme kopírovat i složky. Např. takto zkopírujeme jednu složku do druhé s tím, že se cílová složka vytvoří, pokud neexistuje. Jelikož je řeč o rekurzi, platí to samé pro podsložky a tak dále.
mv
Jako cp kopíroval, mv přesouvá (název má od move). Pokud soubor přesuneme na stejné místo, ale pod jiným názvem, dojde k jeho přejmenování. Podobně jako u cp můžeme zadat parametr -i, který nechá uživatele potvrdit přepsání existujícího souboru. Příkaz si vyzkoušejme:

Kromě složky můžeme zadat i cestu k souboru s jeho názvem, soubor se přesune a přejmenuje.

rm
Rm vymaže soubory a složky (jako remove). Dávejte si velký pozor,
protože v Linuxu neexistuje nic, jako undelete ve Windows. Jakmile soubor
odstraníte, je pryč. Říká se, že Linux je pro tvrdé Zvláštní pozor si dejte při
mazání souborů a složek pomocí zástupných znaků. Raději si dotaz
nejprve sestavte a ozkoušejte u příkazu ls.
Můžeme použít opět přepínač -i pro vyžádání potvrzení od uživatele a také -r pokud chceme, aby se mazaly složky včetně jejich obsahu. Zkusme si to:

mkdir
Vytvoří novou složku.

Získání informací o příkazech
Příkazy, které píšeme do Bashe, mohou být 4 druhů:
- Program - Příkaz jednoduše spustí stejně pojmenovaný program ze složky /bin. Můžete se na ně podívat a najít si např. ls nebo mkdir.
- Součást shellu (shell builtin) - Příkazy, které poskytuje přímo shell. Jsou to např. cd, echo nebo help.
- Funkce - Umožňuje zapouzdřit několik příkazů do funkce, kterou můžeme jednoduše vyvolat jako by to byl příkaz.
- Alias - Alias nám umožňuje zavést nový název pro existující příkazy.
type
Jakého typu je daný příkaz zjistíme pomocí příkazu type. Podívejme se na několik základních příkazů:

Vidíme, že cd je součást shellu, cp je program ve složce /bin a ls je alias na ls, kterému dává navíc parametr pro změnu barvy. Díky tomu příkaz ls ve výchozím volání zobrazuje:
- Složky modře
- Spustitelné nebo datové soubory zeleně
- Symbolické odkazy tyrkysově
- Zařízení žlutě
- Grafické soubory růžově
- Archivy červeně
Symbolické odkazy
Když je řeč o symbolických odkazech, vysvětleme si jak fungují. V Linuxu je možné vytvořit soubor, který funguje jako odkaz na jiný soubor. Můžeme tak docílit několika názvů jednoho souboru. Ve Windows se tomuto principu vzdáleně blíží zástupce, který se ovšem nechová jako soubor a všechny aplikace s ním neumí pracovat.
Symbolické odkazy poznáme pomocí znaku šipky a nalezneme je např. ve složce /bin, kde jsou programy, které v shellu používáme. Pokud si obsah složky /bin vypíšeme dlouhým formátem, uvidíme zde např. symbolický odkaz rnano, který odkazuje nano, které spustí v restricted módu.

which
Na některých systémech může být více programů pro ten samý příkaz. Lokaci programu, který příkaz používá, vypíšeme pomocí which:

Nápověda
K shell příkazům lze samozřejmě získat i nápovědu. Bohužel způsob, jakým si o ni řekneme, závisí na typu příkazu.
man
Většina programů vystavuje manuál, který si můžeme prohlédnout pomocí příkazu man.


Mnoho programů/příkazů podporuje jako parametr --help, po jehož zadání se vypíše nápověda. Zpracování v manuálu je však přehlednější.

help
Help je příkaz shellu, který vypíše informace o nějaké jeho součásti (o shell builtin). Vypišme si informace o příkazu cd:

Příště si řekneme více o uživatelských oprávněních, naučíme se instalovat aplikace a spravovat procesy.
Komentáře


Zobrazeno 2 zpráv z 2.