7. díl - Linuxový terminál (Bash) - Práce se soubory

Linux a UNIX Základy Linuxový terminál (Bash) - Práce se soubory

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:

Zobrazení textového souboru pomocí less v Bashi
Zobrazení textového souboru pomocí less v Bashi

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:

Zobrazení textového souboru pomocí nano v Bashi
Zobrazení textového souboru pomocí nano v Bashi

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:

Analýza obsahu souboru pomocí příkazu file v Bashi

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][[:di­git:]][[: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:

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

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říkaz cp pro kopírování souborů a složek v Bashi
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:

Příkaz mv pro přesun souborů a složek v Bashi

Kromě složky 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

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:

Příkaz rm pro odstranění souborů a složek v Bashi

mkdir

Vytvoří novou složku.

Vytvoření nové složky pomocí příkazu mkdir v Bash

Získání informací o příkazech

Příkazy, které píšeme do Bashe, mohou být 4 druhů:

  1. 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.
  2. Součást shellu (shell builtin) - Příkazy, které poskytuje přímo shell. Jsou to např. cd, echo nebo help.
  3. Funkce - Umožňuje zapouzdřit několik příkazů do funkce, kterou můžeme jednoduše vyvolat jako by to byl příkaz.
  4. 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

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.

Symbolické odkazy v 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

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
Manuál v Bashi

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

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:

Shellový příkaz help v Linuxu

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


 

  Aktivity (2)

Článek pro vás napsal David Čápka
Avatar
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.

Jak se ti líbí článek?
Celkem (6 hlasů) :
55555


 



 

 

Komentáře

Avatar
mkub
Redaktor
Avatar
mkub:

k napovede este pridam, ze existuje aj prikaz

info prikaz

to vypise informacie o danom prikaze
a

apropos vzorka

, co vypise vsetky prikazy, ktorych nazvy obsahuju danu vzorku

 
Odpovědět  +1 5.8.2014 12:40
Avatar
Michal Žůrek (misaz):

Widows má jak primitivního zástupce, tak pokud používáš souborový systém NTFS má i symbolické odkazy, musí se však vytvářet přes příkazový řádek. Všechny aplikace pak ve Windows vidí ten odkaz přímo jako ten soubor či složku.

mklink /d "cestza k novému odkazu" "cesta k souboru/složce"
Odpovědět 5.8.2014 13:20
Nesnáším {}, proto se jim vyhýbám.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.