NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

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

V minulé lekci, Linuxový terminál (Bash) - Prozkoumávání adresářů, jsme si nastavili více pracovních ploch a uvedli se do linuxového shellu. Dále se naučili prozkoumávat adresáře pomocí příkazů pwd, ls, cd a dalších.

Dnešní lekcí budeme v Bashi pokračovat a věnovat se budeme práci se soubory.

Prohlížení souborů

Č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 zobrazení textových souborů můžeme použít několik programů. Z grafického rozhraní jsme si v kurzu představili Gedit. Dnes navážeme textovým rozhraním a ukážeme si 5 základních způsobů, kterými lze číst soubor. Textový editor spustíme tím, že napíšeme do konzole jeho název, například vi nebo nano. Tím otevřeme prázdný editor. Chceme-li otevřít již existující soubor, přidáme za editor ještě název souboru, například vi hello_world. Tímto způsobem otevřeme pouze soubor ve stejném adresáři, ve kterém se právě nacházíme. Pokud se soubor nachází v jiném adresáři, musíme uvést celou relativní či absolutní cestu vi /home/user/hello_world.

Editor vi a vim

Vi je základní textový editor z počátku UNIXu a najdeme ho téměř v každé distribuci. Výchozím editorem v Ubuntu je ale novější a propracovanější Vim. Tyto editory jsou velmi mocné a k vysvětlení úplného ovládání by nestačil ani jeden celý kurz. Proto si projdeme pouze základní příkazy, abychom uměli soubor otevřít, upravit, uložit a podobně. Abychom mohli do editoru napsat či vložit text, musíme nejprve stisknout klávesu i nebo Insert, čímž se přepneme do režimu vkládání. Po dopsání textu musíme naopak stisknout klávesu Esc a vrátit se do příkazového režimu. Další ovládání je vždy dostupné přes dvojtečku a příkaz, například :w zapíše změny do souboru. Pro začátek si vystačíme s následujícími příkazy:

  • :w nazev_souboru - Vytvoří nový soubor
  • :q - Ukončí program
  • :q! - Ukončí program bez uložení změn

Podrobněji se editoru Vim věnujeme v samostatné lekci Základy editoru Vim.

Pager less a cat

Dalším často využívaným příkazem je less. Less není editor, ale pager. Nemůžeme s ním upravovat nebo přepisovat text v souboru, ale pouze si ho přečíst. Příkazem less nazev_souboru vypíšeme obsah tohoto souboru na celou stránku:

Zobrazení textového souboru pomocí less v Bashi - Základy Linuxu

V textu se pohybujeme pomocí šipek nebo PageUp PageDown. Nápovědu k dalším příkazům zobrazíme klávesou h a program ukončíme stisknutím q.

Příkaz cat funguje velmi podobně jako less, ale s tím rozdílem, že nevypíše obsah souboru do okna ale přímo do konzole.

Editor nano

Pro editaci nebo rozumnější zobrazování můžeme použít editor 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 editoru nano:

Zobrazení textového souboru pomocí nano v Bashi - Základy Linuxu
Zobrazení textového souboru pomocí nano v Bashi - Základy Linuxu

Ovládání nano je popsáno v jeho spodní liště. Stačí stisknout CTRL + jeden ze znaků, například X pro ukončení.

touch

Dalším způsobem, jak vytvořit soubor, je příkaz touch. Chceme-li vytvořit více souborů najednou, stačí pokud napíšeme jejich názvy za sebe: touch soubor1 soubor2 soubor3.

mkdir

Vytvoří nový adresář. Stejně jako u touch můžeme vytvořit více adresářů v jednom příkazu:

Vytvoření nové složky pomocí příkazu mkdir v Bash - Základy Linuxu

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:

Analýza obsahu souboru pomocí příkazu file v Bashi - Základy Linuxu

Manipulace se soubory a adresáři

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říklad 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

Příkaz cp (jako copy) zkopíruje zadané soubory nebo adresáře. Zkusíme si zkopírovat nějaký soubor a poté vypsat obsah adresáře, abychom viděli, že tam opravdu je:

Příkaz cp pro kopírování souborů a složek v Bashi - Základy Linuxu

Jako cestu můžete samozřejmě zadat i relativní nebo se zástupnými znaky.

Chceme-li zkopírovat soubor do určitého adresáře, napíšeme tento adresář na konec příkazu:

Příkaz cp pro kopírování souborů a složek v Bashi - Základy Linuxu

Přepínače

I u příkazu cp můžeme zadat jako první parametr přepínače:

  • -i - Pokud kopírujeme nějaký soubor (napří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 platící pro tento adresář a vše, co se v něm nachází), můžeme kopírovat i adresáře. Například takto zkopírujeme jeden adresář do druhého s tím, že se cílový adresář vytvoří, pokud neexistuje. Jelikož je řeč o rekurzi, platí to samé pro podadresáře 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:

Příkaz mv pro přesun souborů a složek v Bashi - Základy Linuxu

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

Příkaz mv pro přesun souborů a složek v Bashi - Základy Linuxu

rm

Příkaz rm vymaže soubory a adresáře (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 adresářů 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 adresáře včetně jejich obsahu. Zkusme si to:

Příkaz rm pro odstranění souborů a složek v Bashi - Základy Linuxu

Systémové oddíly

Další důležitou dovedností při správě systému je získání informací o pevném disku. Soubory pro správu disků v Linuxu nalezneme v adresáři /dev. Jsou zde soubory sda, sda1, sda2 či sda3, kde sda je označení pevného disku a přidružená číslice označuje jednotlivé oddíly na disku. Pokud máme v zařízení druhý disk, bude označen jako sdb, třetí disk by byl označen jako sdc a tak dále 🙂

df

Příkaz df (jako disk free) slouží ke zjištění dostupné kapacity na disku. Standardně je však velikost vypsána v bajtech, a proto k příkazu přidáme přepínač -h (jako human) pro uživatelsky přívětivější výpis:

df -h

Výpis příkazu vypadá následovně:

Příkaz df -h pro výpis dostupné kapacity na disku. - Základy Linuxu

Názvy jednotlivých sloupců odpovídají hodnotám:

Filesystem Souborový systém
Size Celková velikost disku
Used Využité místo na disku
Avail Dostupné místo na disku
Use% Využité místo na disku v procentech
Mounted on Adresář, ve kterém je souborový systém zakořeněn

Kromě oddílů sda si můžeme povšimnout i systémů pro dočasné soubory tmpfs.

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 z adresáře /bin. Můžete se na ně podívat a najít si například ls nebo mkdir.
  • Součást shellu (shell builtin) - Příkazy, které poskytuje přímo shell. Jsou to například 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ů:

Příkaz type pro zjištění typu příkazu v Bash - Základy Linuxu

Vidíme, že cd je součást shellu, cp je program v adresáři /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:

  • Adresáře 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říklad v adresáři /bin, kde jsou programy, které v shellu používáme. Pokud si obsah adresáře /bin vypíšeme dlouhým formátem, uvidíme zde například symbolický odkaz rnano, který odkazuje nano, které spustí v restricted módu:

Symbolické odkazy v Linuxu - Základy Linuxu

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:

Příkaz which v Bash - Základy Linuxu

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:

Manuál v Bashi - Základy Linuxu
Manuál v Bashi - Základy Linuxu

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ší:

Parametr –help u programů v Linuxu - Základy Linuxu

help

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

Shellový příkaz help v Linuxu - Základy Linuxu

V příští lekci, Linuxový terminál (Bash) - Oprávnění a instalace balíčků, si vysvětlíme uživatelská oprávnění, naučíme se vystupovat jako super uživatel a instalovat balíčky.


 

Předchozí článek
Linuxový terminál (Bash) - Prozkoumávání adresářů
Všechny články v sekci
Základy Linuxu
Přeskočit článek
(nedoporučujeme)
Linuxový terminál (Bash) - Oprávnění a instalace balíčků
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
200 hlasů
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity