Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
| skoleni:zaklady_prikazove_radky [2018/06/01 16:23] – [Úvod do příkazové řádky] nert | skoleni:zaklady_prikazove_radky [2022/11/14 11:26] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| - | ====== Základy příkazové řádky ====== | + | {{: |
| - | ===== Úvod do příkazové řádky | + | ===== Filozofie UNIXu ===== |
| - | ==== Trocha teorie (a terminologie) na začátek | + | |
| - | Pojem příkazová řádka, nebo anglicky command-line, | + | [[https:// |
| - | * jen pro pokročilé uživatele | + | |
| - | * zastaralá a překonaná | + | |
| - | * příliš složitá | + | |
| - | * a další... | + | |
| - | Sám za sebe bych si dovolil | + | > Pište takové programy, které dělají jen jednu věc a dělají ji dobře. |
| - | === Co je to vůbec ta "příkazová řádka" | + | Nezkrácená verze zmiňuje i to, že by měly spolupracovat a používat tzv. "standardní proudy" |
| - | Jak již název naznačuje, jedná | + | ===== Seznámení |
| - | === Jaký je rozdíl mezi "příkazovou | + | ==== Co je to "příkazová |
| - | Ještě než se pustíme do toho jak celá ta věc funguje, tak bych rád vysvětlil nějaké informace týkající se terminologie. | + | Jak již název naznačuje, jedná |
| - | I když programy | + | My se budeme |
| - | Nejčastějšími pojmy (anglické pojmy se zkratkami v závorkách) jsou: | + | Příkazová řádka, nebo anglicky command line, je užitečný nástroj. Není třeba se obávat, že je: |
| - | * **Aplikační programové rozhraní (API - Application Programming Interface): | + | * jen pro pokročilé uživatele |
| + | * zastaralý a překonaný | ||
| + | * příliš složitý | ||
| + | |||
| + | ==== Jaký je rozdíl mezi " | ||
| + | |||
| + | I když programy v počítači někdy fungují samy od sebe, velice často s vámi (uživatelem) komunikují. | ||
| + | |||
| + | Nejčastějšími pojmy (anglické pojmy se zkratkami v závorkách) jsou: | ||
| + | * **Aplikační programové rozhraní (API - Application Programming Interface): | ||
| * **Uživatelské rozhraní (UI - User Interface): | * **Uživatelské rozhraní (UI - User Interface): | ||
| * **Grafické UI (GUI - Graphical UI):** Uživatelské rozhraní využívající grafické znázornění jako okna, dialogy, tlačítka apod. | * **Grafické UI (GUI - Graphical UI):** Uživatelské rozhraní využívající grafické znázornění jako okna, dialogy, tlačítka apod. | ||
| - | * **Textové UI (TUI - Text UI):** Uživatelské rozhraní skládající se z textových prvků, to ale neznamená, že také nemůže mít dialogy, tlačítka atd. | + | * **Textové UI (TUI - Text UI):** Uživatelské rozhraní skládající se z textových prvků; také může mít dialogy, tlačítka atd. |
| - | * **Rozhraní příkazové řádky (CLI - Command-Line Interface): | + | * **Rozhraní příkazové řádky (CLI - Command-Line Interface): |
| - | Příkazová řádka je tedy něco kam můžeme psát příkazy a pouštět programy. | + | Příkazová řádka je tedy něco, kam můžeme psát příkazy a kde spouštět programy. |
| - | === Výhody === | + | ==== Výhody |
| - | To, že se některý program ovládá z příkazové řádky neznamená, že je hned složitější, | + | To, že se některý program ovládá z příkazové řádky, neznamená, že je hned složitější, |
| Hlavní výhody příkazové řádky jsou (tedy hlavně oproti GUI): | Hlavní výhody příkazové řádky jsou (tedy hlavně oproti GUI): | ||
| - | * **Přehlednost:** Vše má svoje místo, písmenek na klávesnici je míň než pixelů na monitoru. | + | * **Přehlednost**: Všechno je rozděleno pravoúhle, do stejně velkých sloupků a řádků, a text je všude stejně vysoký. |
| - | * **Jednoduchost:** Je to jen text a jen klávesnice. | + | * **Jednoduchost**: Je to jen text a jen klávesnice. |
| - | * **Rychlost:** Tady jde spíše o rozdíl mezi TUI a GUI, ale existuje několik porovnání toho jak jsou lidé schopni psát (popřípadě ovládat klávesami) a klikat nebo ovládat myší. Už jste někdy viděli pokladní v obchodě markovat zboží myší? | + | * **Rychlost**: Jde spíše o rozdíl mezi TUI a GUI, ale existuje několik porovnání toho, jak jsou lidé schopni psát (popřípadě ovládat klávesami) a klikat nebo ovládat myší. |
| - | * **Všestrannost: | + | * **Přenositelnost**: Příkazová řádka se bude ovládat téměř stejně, ať už budete na vlastním počítači, nebo se připojíte někam vzdáleně. |
| - | * **Stálost a srozumitelnost: | + | |
| - | Pozor, tím nechci | + | ==== Příkazová řádka |
| - | === Ohromné odhalení (i když to už všichni tušili) === | + | Příkazová řádka, kterou používáte, je také jen program který v běží v Terminálu. |
| - | + | ||
| - | Příkazová řádka kterou používáte je také jen program který v běží v Terminálu. | + | |
| Pro zopakování pojmů: | Pro zopakování pojmů: | ||
| - | * **Terminál:** program s GUI, protože má okno a nabídku na které se dá kliknout a je očividně grafické (stíny, obdélníky) a jeho součástí je i to, co se zobrazí po pravém kliknutí myši (jak nabídka, tak okna nastavení). | + | * **Terminál**: program s GUI. |
| - | * **Bash:** textový program který pomocí CLI poskytuje uživateli příkazovou řádku. Píše se do něj na klávesnici (pokud není označená např. nabídka okna terminálu) a stejně tak se i pohybuje s kurzorem. | + | * **Shell (v našem případě konkrétně bash):** textový program, který pomocí CLI poskytuje uživateli příkazovou řádku. |
| - | ==== První krůčky (a další velká dávka terminologie) ==== | + | Důležité: |
| + | * **Nikdy nic nekopírujte z internetu nebo jakýchkoliv neznámých zdrojů do terminálu!** | ||
| + | * Terminál sám (i mimo shell) umí spoustu užitečných zkratek, viz nápověda. | ||
| - | Jak jsem již předestřel v úvodu, my si budeme všechno zkoušet v programu __Terminál__. | + | ==== Umístění programů |
| - | === Prompt === | + | Pokud napíšeme příkaz do příkazové řádky a chceme jej spustit, tak se děje několik věcí. |
| - | To, co uvidíte když spustíte nový terminál může vypadat třeba | + | Proměnná '' |
| + | |||
| + | ==== Prompt ==== | ||
| + | |||
| + | To, co uvidíte, když spustíte nový terminál, může vypadat třeba takto (toto je příklad z live DVD Fedory | ||
| <code text> | <code text> | ||
| Řádek 64: | Řádek 71: | ||
| </ | </ | ||
| - | Tomuto | + | Tomu se říká |
| - | * **liveuser:** Název aktuálního uživatele | + | * **'' |
| - | * **localhost-live:** Název aktuálního systému (hostitele, anglicky | + | * **'' |
| - | * **~:** Aktuální cesta ve které se nacházíme (tilda znamená domovský adresář aktuálního uživatele). | + | * **'' |
| - | * **$:** Uživatel není přepnutý na administrátora | + | * **'' |
| - | No a když už nás to tak pobízí na zadání | + | <code text> |
| + | |---------- prompt ---------| | ||
| + | uživatel | ||
| + | | | | ||
| + | V V | ||
| + | [liveuser@localhost-live ~]$ echo -n ' | ||
| + | Ahoj | ||
| + | |---------+----------| | ||
| + | | | | přepínač | ||
| + | | | název | ||
| + | | ||
| + | </ | ||
| - | === Příkaz(y) === | + | * **Tabulátor: |
| + | * **Ctrl-C:** přerušuje běžící program, popř. resetuje zadávání příkazu | ||
| + | * **Uvozovky: | ||
| + | * **Středník: | ||
| - | Jedním z prvních | + | ==== Zobrazení nápovědy k příkazům ==== |
| - | příkazu ho potvrdíme stisknutím tlačítka '' | + | |
| - | řádky a vypsal se nám znovu prompt. | + | |
| - | příkazu je známka toho, že náš předchozí příkaz skončil. | + | |
| - | jen prázdný řádek? | + | |
| - | < | + | Pokud chcete o nějakém příkazu zjistit více, např. jaké podporuje a přijímá argumenty, co vlastně dělá atd., tak máte několik možností. |
| - | echo Ahoj | + | |
| + | * **Manuál: | ||
| + | * **'' | ||
| + | * **Info stránky**: Další velká dávka informací, podobná manuálovým stránkám (někdy stejné). Info stránky podporují odkazy mezi jednotlivými stránkami a spouští se pomocí '' | ||
| + | |||
| + | Zkuste si zjistit informace o různých příkazech za pomoci různých metod. | ||
| + | |||
| + | ===== Používání příkazové řádky ===== | ||
| + | |||
| + | Všechno budeme zkoušet v programu *Terminál*. Doporučuji okno maximalizovat abychom měli hodně prostoru -- nebudeme potřebovat nic jiného. | ||
| + | |||
| + | ==== Zadávání příkazů ==== | ||
| + | |||
| + | Příkazy, které budeme zadávat, mohou být jak zabudované příkazy příkazového řádku, tak i programy nainstalované v operačním systému. | ||
| + | |||
| + | Nejprve vyzkoušíme příkaz '' | ||
| + | |||
| + | < | ||
| + | $ echo Ahoj | ||
| </ | </ | ||
| Řádek 92: | Řádek 127: | ||
| </ | </ | ||
| - | Příkaz '' | + | Příkaz '' |
| - | Jedním z častých zmatků u začátečníků může být když výstup příkazu neskočí na další řádek. | + | Co když výstup příkazu neskočí na další řádek? To si můžeme vyzkoušet. Takto by to mohlo vypadat před a po: |
| <code text> | <code text> | ||
| Řádek 101: | Řádek 136: | ||
| </ | </ | ||
| - | Rozdíl tohoto příkazu oproti předchozímu je přidání | + | Rozdíl tohoto příkazu oproti předchozímu je přidání |
| + | |||
| + | ==== Procházení historie | ||
| + | |||
| + | Zmáčkneme šipku nahoru, | ||
| + | |||
| + | Po napsání několika stovek řádků příkazů bude hledání některého staršího pomocí šipek nahoru a dolů docela neúčinné a zdlouhavé. | ||
| + | |||
| + | Pokud najdeme, co jsme hledali, tak pohybem v příkazu | ||
| + | |||
| + | Pro hledání dalšího výskytu stejného podřetězce stačí opakovat zkratku '' | ||
| + | |||
| + | ==== Editace příkazové řádky ==== | ||
| + | |||
| + | Řádka se dá editovat podobně jako v textovém editoru, tedy posouvat se šipkami doleva a doprava nebo pomocí kláves '' | ||
| <code text> | <code text> | ||
| Řádek 109: | Řádek 158: | ||
| </ | </ | ||
| - | ====...tady toho bude vic jeste...==== | + | Jak je vidět, tak příkaz '' |
| - | ===== Práce se soubory a adresářy ===== | + | ==== Doplňování názvů příkazů |
| + | Místo toho, abychom psali '' | ||
| - | ==== Systém súborov (Filesystem) ==== | + | Zmáčkněte '' |
| + | |||
| + | Mačkáním mezerníku posouváme o stránky, dokud se nevypíší všechny. | ||
| + | |||
| + | <code text> | ||
| + | [liveuser@localhost-live ~]$ echo^C | ||
| + | [liveuser@localhost-live ~]$ e^C | ||
| + | [liveuser@localhost-live ~]$ echo Ahoj vsichni kolem | ||
| + | Ahoj vsichni kolem | ||
| + | [liveuser@localhost-live ~]$ █ | ||
| + | </ | ||
| + | |||
| + | Tam, kde je vidět '' | ||
| + | |||
| + | ==== Kopírování a vkládání přes schránku ==== | ||
| + | |||
| + | Terminál umožňuje jak kopírování a vkládání. Pokud něco označíme, tak i bez jakýchkoliv klávesových zkratek to můžeme rovnou vložit kliknutím prostředního tlačítka myši (popř. adekvátním hmatem, nejčastěji trojdotek, na touchpadu) tam, kam chceme text vložit. Ctrl-C a Ctrl-V nebudou dělat to, na co můžete být normálně zvyklí. | ||
| + | |||
| + | ==== Zadávání parametrů ==== | ||
| + | |||
| + | Šipkou nahoru načteme předchozí příkaz a pomocí Ctrl-< | ||
| + | |||
| + | <code text> | ||
| + | [liveuser@localhost-live ~]$ echo Ahoj | ||
| + | Ahoj vsichni kolem | ||
| + | [liveuser@localhost-live ~]$ █ | ||
| + | </ | ||
| + | |||
| + | Výstup vypadá tak, jak vypadá, protože příkaz '' | ||
| + | |||
| + | <code text> | ||
| + | [liveuser@localhost-live ~]$ echo " | ||
| + | Ahoj | ||
| + | [liveuser@localhost-live ~]$ █ | ||
| + | </ | ||
| + | |||
| + | Uvozovky vytváří řetězec, který se dál nerozděluje. | ||
| + | |||
| + | <code text> | ||
| + | [liveuser@localhost-live ~]$ echo ' | ||
| + | Ahoj | ||
| + | [liveuser@localhost-live ~]$ █ | ||
| + | </ | ||
| + | |||
| + | Pokud u posledních příkazů zapomenete jednu uvozovku, tak to bude vypadat po zmáčknutí klávesy '' | ||
| + | |||
| + | <code text> | ||
| + | [liveuser@localhost-live ~]$ echo ' | ||
| + | > █ | ||
| + | </ | ||
| + | |||
| + | Samozřejmě se z toho dá vyskočit pomocí '' | ||
| + | |||
| + | ==== Řetězení příkazů ==== | ||
| + | |||
| + | Dalším speciálním znakem je středník. | ||
| + | |||
| + | <code text> | ||
| + | [liveuser@localhost-live ~]$ echo | ||
| + | |||
| + | [liveuser@localhost-live ~]$ echo Ahoj | ||
| + | Ahoj | ||
| + | [liveuser@localhost-live ~]$ █ | ||
| + | </ | ||
| + | |||
| + | Pokud je ale dám na jeden řádek a oddělím středníkem, | ||
| + | |||
| + | <code text> | ||
| + | [liveuser@localhost-live ~]$ echo; echo Ahoj | ||
| + | |||
| + | Ahoj | ||
| + | [liveuser@localhost-live ~]$ █ | ||
| + | </ | ||
| + | |||
| + | Úkol: | ||
| + | Co by byl výstup následujících příkazů? | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | ==== Zobrazení obsahu souboru ==== | ||
| + | |||
| + | Spustíme program '' | ||
| + | |||
| + | <code text> | ||
| + | [liveuser@localhost-live ~]$ cat / | ||
| + | localhost-live | ||
| + | [liveuser@localhost-live ~]$ █ | ||
| + | </ | ||
| + | |||
| + | Příkaz vypíše obsah souboru, který mu zadáme, v našem případě soubor ''/ | ||
| + | |||
| + | <code text> | ||
| + | [liveuser@localhost-live ~]$ cat | ||
| + | asdf | ||
| + | asdf | ||
| + | |||
| + | |||
| + | neco | ||
| + | neco | ||
| + | </ | ||
| + | |||
| + | Já jako uživatel jsem v tomto případě napsal tři řádky, na prvním bylo '' | ||
| + | |||
| + | ==== Ukončení zadávání vstupu ==== | ||
| + | |||
| + | Náš shell (v našem případě '' | ||
| + | |||
| + | <code text> | ||
| + | [liveuser@localhost-live ~]$ bash | ||
| + | [liveuser@localhost-live ~]$ █ | ||
| + | </ | ||
| + | |||
| + | Vypadá to jakoby se nic nestalo, ale pravdou je, že nyní běží dva programy '' | ||
| + | |||
| + | <code text> | ||
| + | [liveuser@localhost-live ~]$ bash | ||
| + | [liveuser@localhost-live ~]$ bash | ||
| + | [liveuser@localhost-live ~]$ █ | ||
| + | </ | ||
| + | |||
| + | Teď nám běží tři naráz. | ||
| + | |||
| + | < | ||
| + | echo $SHLVL | ||
| + | </ | ||
| + | |||
| + | Pokud ho nyní spustíme (nezapomeňte na tabulátor, jak u názvu příkazu tak i u jeho argumentu), tak by nám měl vypsat číslo 4 (v prvním shellu běží desktopové prostředí, | ||
| + | |||
| + | <code text> | ||
| + | [liveuser@localhost-live ~]$ exit | ||
| + | [liveuser@localhost-live ~]$ echo $SHLVL | ||
| + | 3 | ||
| + | [liveuser@localhost-live ~]$ █ | ||
| + | </ | ||
| + | |||
| + | Zmáčkneme '' | ||
| + | |||
| + | Stejně jako '' | ||
| + | |||
| + | ==== Získání administrátorských práv ==== | ||
| + | |||
| + | V Linuxu existuje administrátorský účet (**root**, superuser), který má plné oprávnění. | ||
| + | |||
| + | To, jestli jste oprávněni pouštět příkazy za administrátora není tedy dáno tím, jestli znáte jeho heslo, ale tím, jestli jste k tomu oprávněni, | ||
| + | |||
| + | Jak tedy nejjednodušeji zjistit, jestli se příkaz pustil za superuživatele? | ||
| + | |||
| + | <code text> | ||
| + | [liveuser@localhost-live ~]$ sudo bash | ||
| + | [root@localhost-live liveuser]# █ | ||
| + | </ | ||
| + | |||
| + | Změnilo se nám pár věcí v promptu. | ||
| + | |||
| + | **Pokud zapomenete, že jste přepnutí na administrátora a nějaký příkaz spustíte omylem, tak můžete způsobit větší škodu než za normálního uživatele. | ||
| + | |||
| + | ===== Přehled klávesových zkratek a funkčních znaků ===== | ||
| + | |||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **šipka nahoru**: posun v historii příkazů o jeden zpět | ||
| + | * **šipka dolu**: posun v historii příkazů o jeden dopředu | ||
| + | * **Tabulátor**: | ||
| + | * **Uvozovky**: | ||
| + | * **Středník**: | ||
| + | |||
| + | |||
| + | ===== Práce se soubory a adresáři ===== | ||
| + | |||
| + | ==== Systém súborov (file system) ==== | ||
| Systém súborov v Linuxe je organizovaný v **jednej stromovej** štruktúre. | Systém súborov v Linuxe je organizovaný v **jednej stromovej** štruktúre. | ||
| - | **Koreň** tohoto systému (//filesystem | + | **Koreň** tohoto systému (//file system |
| Prvá úroveň systému súborov je bežne rozdelená na nasledujúce adresáre: | Prvá úroveň systému súborov je bežne rozdelená na nasledujúce adresáre: | ||
| - | * **/boot** - obsahuje súbory potrebné k spusteniu boot-procesu | + | * **'' |
| - | * **/ | + | * **'' |
| - | * **/ | + | * **'' |
| - | * **/home** - domovské adresáre bežných užívateľov | + | * **'' |
| - | * **/proc** - prístup k informáciám a nastaviteľným parametrom jednotlivých procesov aj celého systému (na úrovni kernelu) | + | * **'' |
| - | * **/media** - pripojené odpojitelné médiá (napr. USB alebo CD-ROM a pod.) | + | * **'' |
| - | * **/mnt** - dočasne pripojené ďalšie suborové systémy | + | * **'' |
| - | * **/opt** - súbory volitelných softwarových balíčkov | + | * **'' |
| - | * **/root** - domovský adresár superužívateľa ‘root’ | + | * **'' |
| - | * **/run** - data používané bežiacimi procesami od posledného bootu (napr. ID otvorených súborov, zamknuté súbory, a ďalšie) | + | * **'' |
| - | * **/srv** - data služieb (httpd, ftp, a pod.), ktoré systém poskytuje | + | * **'' |
| - | * **/sys** - informacie o zariadeniach a prístup k nastavitelným systémovým parametrom (na úrovni kernelu) | + | * **'' |
| - | * **/tmp** - všeobecne prístupný priestor pre dočasné data, resp. “čokoľvek” | + | * **'' |
| - | * **/usr** - nainštalovaný software, zdielané knihovne, zdrojové súbory a pod. | + | * **'' |
| - | * **/ | + | * **'' |
| - | * **/ | + | * **'' |
| - | * **/ | + | * **'' |
| - | * **/ | + | * **'' |
| - | * **/var** - variabilné, | + | |
| - | //Pozn.:// Toto rozdelenie **nie je** striktné, avšak vačšina bežných aplikácií ho dodržuje. (vínimka: /proc, /sys, /boot) | + | Pozn.: Toto rozdelenie **nie je** striktné, avšak vačšina bežných aplikácií ho dodržuje (vínimka: |
| ==== Prehľad základných príkazov ==== | ==== Prehľad základných príkazov ==== | ||
| === Navigácia === | === Navigácia === | ||
| - | | + | |
| - | * Zobrazí absolútnu cestu k aktuálnemu adresáru | + | |
| + | * Zobrazí absolútnu cestu k aktuálnemu adresáru | ||
| < | < | ||
| $ pwd | $ pwd | ||
| Řádek 153: | Řádek 375: | ||
| </ | </ | ||
| - | * **LS** - // | + | * **'' |
| * Vypíše obsah aktuálneho adresára | * Vypíše obsah aktuálneho adresára | ||
| - | * Užitočné prepínače: | + | * Užitočné prepínače: |
| - | * ‘**-a**’ - vypíše všetky súbory, vrátane skrytých((skryté súbory začínajú znakom | + | * **'' |
| - | * ‘**-l**’ - vypíše detailnejšie informácie (dá sa použiť skratka | + | * **'' |
| < | < | ||
| $ ls | $ ls | ||
| Řádek 163: | Řádek 385: | ||
| </ | </ | ||
| - | * **CD** - //change directory// | + | * **'' |
| * Zmení aktuálny adresár na zadaný (“// | * Zmení aktuálny adresár na zadaný (“// | ||
| - | * Dá sa používať zadaním absolútnej aj relatívnej cesty. | + | * Dá sa používať zadaním absolútnej aj relatívnej cesty |
| - | * Bez argumentov zmení adresár na // | + | * Bez argumentov zmení adresár na // |
| - | * Existuje niekoľko symbolových skratiek, pomocou ktorých sa dá cieľová cesta konštruovať: | + | * Existuje niekoľko symbolových skratiek, pomocou ktorých sa dá cieľová cesta konštruovať |
| - | * ‘**.**’ - skratka pre // | + | * **'' |
| - | * ‘**..**’ - skratka pre // | + | * **'' |
| - | * ‘**~**’ - skratka pre // | + | * **'' |
| - | * Špeciálna | + | * Špeciálny |
| < | < | ||
| - | $ pwd | + | $ pwd |
| / | / | ||
| $ cd ../Pictures | $ cd ../Pictures | ||
| - | $ pwd | + | $ pwd |
| / | / | ||
| Řádek 185: | Řádek 407: | ||
| </ | </ | ||
| - | * **TREE** | + | * **'' |
| * Vypíše (stromovo) štruktúru súborového systému od zadaného adresáru | * Vypíše (stromovo) štruktúru súborového systému od zadaného adresáru | ||
| < | < | ||
| Řádek 192: | Řádek 414: | ||
| </ | </ | ||
| - | * **FIND** | + | * **'' |
| - | * Umožňuje vyhľadávať súbory, prípadne obsah súborov | + | * Umožňuje vyhľadávať súbory, prípadne obsah súborov (analógia: Windows Search) |
| * Poskytuje veľa rôznych parametrov pre upresnenie vyhladávania. | * Poskytuje veľa rôznych parametrov pre upresnenie vyhladávania. | ||
| - | * Viac informácií: | + | * Viac informácií: |
| < | < | ||
| $ find /etc -name httpd | $ find /etc -name httpd | ||
| Řádek 206: | Řádek 428: | ||
| === Modifikácia === | === Modifikácia === | ||
| - | * **MKDIR** - //make directory// | + | * **'' |
| * Vytvorí zadaný adresár (rodičovský adresár musí existovať) | * Vytvorí zadaný adresár (rodičovský adresár musí existovať) | ||
| - | * Prepínač | + | * Prepínač **'' |
| < | < | ||
| $ mkdir novy_adresar | $ mkdir novy_adresar | ||
| $ mkdir novy_adresar/ | $ mkdir novy_adresar/ | ||
| - | mkdir: cannot create directory | + | mkdir: cannot create directory |
| $ mkdir -p novy_adresar/ | $ mkdir -p novy_adresar/ | ||
| - | $ tree | + | $ tree |
| . | . | ||
| └── novy_adresar | └── novy_adresar | ||
| Řádek 224: | Řádek 446: | ||
| </ | </ | ||
| - | * **RMDIR** - //remove directory// | + | * **'' |
| - | * Odstráni/zmaže zadaný adresár | + | * Odstráni |
| - | * Zadaný adresár musí byť prázdny | + | * Zadaný adresár musí byť prázdny (Prázdny adresár obsahuje iba špeciálne súbory |
| < | < | ||
| $ rmdir novy_adresar/ | $ rmdir novy_adresar/ | ||
| Řádek 239: | Řádek 461: | ||
| </ | </ | ||
| - | * **TOUCH** | + | * **'' |
| - | * Pomocou tohto príkazu sa dá vytvoriť nový (prázdny) súbor. | + | * Pomocou tohto príkazu sa dá vytvoriť nový (prázdny) súbor. (Funkcionalita tohto príkazu nie je vyslovene vytváranie súborov, ale z jeho podstaty sa dá pre vytváranie použiť.) |
| < | < | ||
| - | $ touch subor1 | + | $ touch subor1 |
| $ touch novy_adresar/ | $ touch novy_adresar/ | ||
| $ tree | $ tree | ||
| . | . | ||
| ├── novy_adresar | ├── novy_adresar | ||
| - | │ ├── druhy | + | │ |
| - | │ │ ├── subor3 | + | │ |
| - | │ │ └── treti | + | │ |
| - | │ └── subor2 | + | │ |
| └── subor1 | └── subor1 | ||
| </ | </ | ||
| - | * **RM** - //remove// | + | * **'' |
| * Odstráni zadaný súbor | * Odstráni zadaný súbor | ||
| * Užitočné prepínače: | * Užitočné prepínače: | ||
| - | * ‘**-r**’ - // | + | * **'' |
| - | * ‘**-f**’ - //force// - ignoruje problémové argumenty a preskočí potvrdzovanie užívateľom | + | * **'' |
| - | * Kombinácia | + | * Kombinácia **'' |
| < | < | ||
| Řádek 277: | Řádek 499: | ||
| - | * **ECHO** | + | * **'' |
| * Zobrazí zadaný text na // | * Zobrazí zadaný text na // | ||
| - | * Výstup tohoto príkazu sa bežne posiela do súborov (viz. // | + | * Výstup tohoto príkazu sa bežne posiela do súborov (viz // |
| < | < | ||
| $ echo Hello world! | $ echo Hello world! | ||
| Řádek 285: | Řádek 507: | ||
| </ | </ | ||
| - | * **CP** - //copy// | + | * **'' |
| * Vytvorí kópiu zadaného súboru na zadanom mieste (prípadne s novým názvom) | * Vytvorí kópiu zadaného súboru na zadanom mieste (prípadne s novým názvom) | ||
| - | * Prepínač ‘**-r**’ (// | + | * Prepínač ‘**'' |
| - | * //Pokročilé//: príkaz | + | * Pokročilé: |
| - | * **MV** - //move// | + | * **'' |
| - | * Presunie daný objekt (súbor, adresár, iné..) na zadané miesto | + | * Presunie daný objekt (súbor, adresár, iné) na zadané miesto |
| * Tento príkaz sa tiež používa pre **premenovanie** objektov. | * Tento príkaz sa tiež používa pre **premenovanie** objektov. | ||
| - | * **LN** - //link// | + | * **'' |
| - | * Vytvorí odkaz na daný objekt (adresár, súbor, iné..) | + | * Vytvorí odkaz na daný objekt (adresár, súbor, iné) |
| * Po zmazaní povodného objektu, tento odkaz stále existuje a je funkčný. Daný objekt je úplne zmazaný až keď naňho neukazuje žiadny odkaz (nemá žiadnu ďalšiu referenciu). | * Po zmazaní povodného objektu, tento odkaz stále existuje a je funkčný. Daný objekt je úplne zmazaný až keď naňho neukazuje žiadny odkaz (nemá žiadnu ďalšiu referenciu). | ||
| - | * Prepínač | + | * Prepínač **'' |
| === Čítanie === | === Čítanie === | ||
| - | * **CAT** - // | + | * **'' |
| * Vypíše obsah súboru na // | * Vypíše obsah súboru na // | ||
| - | * **TEE** | + | * **'' |
| * Číta zo // | * Číta zo // | ||
| - | * //Pozn.//: Bežné použitie na konci //roury// pre distribúciu výstupu do viacerých súborov. | + | * Pozn.: Bežné použitie na konci //roury// pre distribúciu výstupu do viacerých súborov. |
| - | * **WC** - //word count// | + | * **'' |
| * Spočíta a vypíše počet slov (medzier) v zadanom súbore. | * Spočíta a vypíše počet slov (medzier) v zadanom súbore. | ||
| - | * Prípadne počet riadkov s prepínačom | + | * Prípadne počet riadkov s prepínačom **'' |
| - | * **LESS / MORE** | + | * **'' |
| * Tieto príkazy otvoria súbor pre čítanie (nie modifikáciu) | * Tieto príkazy otvoria súbor pre čítanie (nie modifikáciu) | ||
| * Navzájom fungujú trochu rozdielne a záleží na preferenciách užívateľa | * Navzájom fungujú trochu rozdielne a záleží na preferenciách užívateľa | ||
| - | * **HEAD** | + | * **'' |
| * Vypíše začiatok súboru (bez prepínačov prvých 10 riadkov) | * Vypíše začiatok súboru (bez prepínačov prvých 10 riadkov) | ||
| - | * **TAIL** | + | * **'' |
| * Vypíše koniec súboru (bez prepínačov posledných 10 riadkov) | * Vypíše koniec súboru (bez prepínačov posledných 10 riadkov) | ||
| - | * **GREP** | + | * **'' |
| - | * Vyhľadá zadaný text v súbore. | + | * Vyhľadá zadaný text v súbore. |
| * Tento príkaz je v základe jednoduchý, | * Tento príkaz je v základe jednoduchý, | ||
| + | * Pozn.: O tomto príkaze viac v ďalšej kapitole. | ||
| - | * **SORT** | + | * **'' |
| * Zotriedi vstupné data | * Zotriedi vstupné data | ||
| - | * Rôzne možnosti triedenia viz. “//man sort//” | + | * Rôzne možnosti triedenia viz. '' |
| - | * **UNIQ** | + | * **'' |
| * Preskočí záznamy, ktoré sa za sebou opakujú | * Preskočí záznamy, ktoré sa za sebou opakujú | ||
| - | * Užitočný prepínač pre spočítanie rovnakých záznamov: | + | * Užitočný prepínač pre spočítanie rovnakých záznamov: **'' |
| + | === " | ||
| + | |||
| + | Pri práci s príkazovou riadkou sa často stretneme s potrebou vykonať nejaký príkaz pre viacero rôznych súborov, ktoré však majú nejakú spoločnú vlastnosť (napr.: presunúť všetky súbory s príponou '' | ||
| + | |||
| + | Abychom nemuseli takéto súbory zadávať po jednom, existujú pomocné skratky, tzv. //divoké karty// (// | ||
| + | |||
| + | * **'' | ||
| + | * Symbol // | ||
| + | * Príklad: | ||
| + | < | ||
| + | $ mv /tmp/*.txt ~/ | ||
| + | </ | ||
| + | |||
| + | Presunie všetky súbory s príponou '' | ||
| + | |||
| + | < | ||
| + | $ rm /tmp/test* | ||
| + | </ | ||
| + | |||
| + | Odstráni z adresáru ''/ | ||
| + | |||
| + | Na zamyslenie: Aký je rozdiel medzi nasledujúcimi príkazmi? | ||
| + | |||
| + | < | ||
| + | $ rm -rf /tmp/* | ||
| + | $ rm -rf /tmp/ | ||
| + | </ | ||
| + | |||
| + | * **''?'' | ||
| + | * Tento symbol zastupuje **akýkoľvek jeden** symbol | ||
| + | |||
| + | * **'' | ||
| + | * Tento zložený symbol sa rozvinie na postupnosť zadaného rozsahu | ||
| + | * Ako //X// a //Y// sa dá zadať rozsah čísel alebo písmen | ||
| + | * Príklad: | ||
| + | < | ||
| + | $ mkdir adresar{A..N} | ||
| + | $ ls | ||
| + | adresarA | ||
| + | adresarB | ||
| + | </ | ||
| + | |||
| + | Na zamyslenie: Čo spraví nasledujúci príkaz? | ||
| + | |||
| + | < | ||
| + | $ touch subor{1..9}{1..9} | ||
| + | </ | ||
| === Presmerovanie === | === Presmerovanie === | ||
| Pre presmerovanie vstupu / výstupu sa používajú nasledovné znaky: | Pre presmerovanie vstupu / výstupu sa používajú nasledovné znaky: | ||
| - | * ‘**<**’ - presmerovanie vstupu (default: // | + | * **'' |
| - | * ‘**>**’ - presmerovanie vystupu (default: // | + | * **'' |
| - | * ‘**< | + | * **'' |
| - | * ‘**2>**’ - presmerovanie chybového výstupu (default: // | + | * **'' |
| Štandardné vstupy / výstupy sú tiež označené číslami nasledovne: | Štandardné vstupy / výstupy sú tiež označené číslami nasledovne: | ||
| * **stdin** - // | * **stdin** - // | ||
| * **stdout** - // | * **stdout** - // | ||
| - | * **stderr** - // | + | * **stderr** - // |
| + | |||
| + | Taktiež existuje špeciálny súbor **''/ | ||
| - | Taktiež existuje špeciálny súbor **/ | ||
| - | Všetko čo je do tohoto súboru zapísané je zahodené / ignorované. | ||
| - | Napríklad je často užitočné do tohto súboru presmerovať //chybový výstup//, keď nás chybové hlásenia nezaujímajú: | ||
| < | < | ||
| - | “príkaz | + | príkaz 2> /dev/null |
| </ | </ | ||
| Presmerovanie sa používa cielene so **súbormi**. | Presmerovanie sa používa cielene so **súbormi**. | ||
| - | + | ||
| Pre predávanie výstupu ďalším príkazom sa používajú “// | Pre predávanie výstupu ďalším príkazom sa používajú “// | ||
| === Roury (pipe) === | === Roury (pipe) === | ||
| - | Rúry sa používajú pre **zreťazenie viacerých príkazov do jedného**, prostredníctvom prepájania ich výstupov so vstupmi. Zapisuje sa znakom | + | |
| + | Rúry sa používajú pre **zreťazenie viacerých príkazov do jedného**, prostredníctvom prepájania ich výstupov so vstupmi. Zapisuje sa znakom **'' | ||
| < | < | ||
| Syntax: " | Syntax: " | ||
| Řádek 367: | Řádek 638: | ||
| </ | </ | ||
| - | Prikazy sa daju sekvenčne zapojit aj viac krát v “//jednom//” príkaze. | + | Prikazy sa daju sekvenčne zapojit aj viac krát v //jednom// príkaze. |
| < | < | ||
| Řádek 379: | Řádek 650: | ||
| yumdownloader | yumdownloader | ||
| yum-groups-manager | yum-groups-manager | ||
| + | </ | ||
| - | (Nasledujúci súbor numbers.txt obsahuje nahodné čísla 0-10) | + | Nasledujúci súbor |
| + | < | ||
| $ cat numbers.txt | sort | uniq -c | $ cat numbers.txt | sort | uniq -c | ||
| 2 0 | 2 0 | ||
| Řádek 393: | Řádek 666: | ||
| 4 8 | 4 8 | ||
| 3 9 | 3 9 | ||
| - | |||
| - | (Tento príkaz spočítal výskyt každého čisla v súbore numbers.txt) | ||
| </ | </ | ||
| + | |||
| + | Tento príkaz spočítal výskyt každého čisla v súbore '' | ||
| ===== Práce s textem, vstupem a výstupem ===== | ===== Práce s textem, vstupem a výstupem ===== | ||
| - | V príkazovej riadke je bežný prípad, že potrebujete spracovať výstup nejakého príkazu. Taký klasický príklad je: máte súbor a hľadáte v ňom kľúčové slovo. Alebo máte adresár, a hľadáte kľúčové slovo v ktoromkoľvek súbore ktorý sa nachádza v spomínanom adresáre. | + | V príkazovej riadke je bežný prípad, že potrebujete spracovať výstup nejakého príkazu. Taký klasický príklad je: máte súbor a hľadáte v ňom kľúčové slovo. Alebo máte adresár a hľadáte kľúčové slovo v ktoromkoľvek súbore, ktorý sa nachádza v spomínanom adresáre. |
| - | Na hľadanie kľúčových slov je najpoužívanejší príkaz | + | Na hľadanie kľúčových slov je najpoužívanejší príkaz |
| Poďme si teraz skúsiť reálne použitie. | Poďme si teraz skúsiť reálne použitie. | ||
| - | Naša úloha bude, že sa snažíme nájsť reťazec | + | Naša úloha bude, že sa snažíme nájsť reťazec |
| < | < | ||
| - | $ grep PATH / | + | $ grep PATH /etc/bashrc |
| case ": | case ": | ||
| PATH=$PATH: | PATH=$PATH: | ||
| Řádek 417: | Řádek 690: | ||
| Reťazec sme našli. Mohli by sme dostať aj čísla riadkov? | Reťazec sme našli. Mohli by sme dostať aj čísla riadkov? | ||
| - | < | + | < |
| - | $ grep -n PATH / | + | |
| 58: case ": | 58: case ": | ||
| 63: PATH=$PATH: | 63: PATH=$PATH: | ||
| - | 65: PATH=$1: | + | 65: PATH=$1: |
| - | </ | + | |
| - | Kde všade môžeme ešte kľúčové slovo PATH nájsť v %%/etc%%? | + | Kde všade môžeme ešte kľúčové slovo '' |
| < | < | ||
| - | $ grep -R PATH /etc/ | + | $ grep -R PATH /etc/ |
| grep: / | grep: / | ||
| grep: / | grep: / | ||
| Řádek 435: | Řádek 706: | ||
| grep: / | grep: / | ||
| grep: / | grep: / | ||
| - | / | + | / |
| - | / | + | / |
| - | / | + | / |
| - | Binary file / | + | Binary file / |
| - | / | + | / |
| … | … | ||
| </ | </ | ||
| - | V príkazovej riadke je možné tieto vstupy a výstupy rôzne presmerovávať. Na presmerovanie sa používa operátor >. To znamená že môžeme napr. presmerovať chybový výstup do súboru: | + | {{: |
| - | + | ||
| - | < | + | |
| - | $ grep -R PATH /etc/ 2>chyby | + | |
| - | / | + | |
| - | / | + | |
| - | / | + | |
| - | Binary file / | + | |
| - | / | + | |
| - | / | + | |
| - | / | + | |
| - | / | + | |
| - | / | + | |
| - | / | + | |
| - | / | + | |
| - | </ | + | |
| - | + | ||
| - | Ako už vidíte, Permission denied chyby už nie sú vo výstupe, ale sú v súbore s názvom “chyby”. | + | |
| - | **Úloha**: presmerujte obsah štandartného | + | **Úloha**: presmerujte |
| ==== Premenné prostredia ==== | ==== Premenné prostredia ==== | ||
| - | Každý linuxový proces ma množinu premenných prostredia ktoré sú mu dostupne. Veľmi ľahko si ich môžeme všetky | + | Každý linuxový proces ma množinu premenných prostredia, ktoré sú mu dostupne. Veľmi ľahko si ich môžeme všetky |
| - | < | + | < |
| Ľahko si môžeme zadefinovať vlastnú premennú a pouziť ju: | Ľahko si môžeme zadefinovať vlastnú premennú a pouziť ju: | ||
| - | < | + | < |
| a následne v tomto tajnom súbore niečo nájsť: | a následne v tomto tajnom súbore niečo nájsť: | ||
| - | < | + | < |
| ==== Tvorba jednoduchého skriptu ==== | ==== Tvorba jednoduchého skriptu ==== | ||
| - | Všetko príkazy ktoré sme doteraz zadali do príkazovej riadky môžeme zapísať do súboru a vykonať sekvenčne: | + | Všetko príkazy, ktoré sme doteraz zadali do príkazovej riadky, môžeme zapísať do súboru a vykonať sekvenčne: |
| - | < | + | < |
| <code bash> | <code bash> | ||
| Řádek 490: | Řádek 744: | ||
| a následne vykonať: | a následne vykonať: | ||
| - | < | + | < |
| - | Náročná úloha: napíšte do príkazovej riadky | + | {{: |
| ===== Úprava souború pomocí terminalového editoru ===== | ===== Úprava souború pomocí terminalového editoru ===== | ||
| + | Jeden z najrozšírenejších a najviac používaných CLI textových editorov je **vi**. Editor vi je predinštalovaný na každom linuxovom systéme a poskytuje množstvo užitočných príkazov na editovanie súborov. | ||
| - | Jeden z najrozšírenejších a najviac používaných CLI textových editorov je vi. Editor vi je predinštalovaný na každom linuxovom systéme a poskytuje množstvo užitočných príkazov na editovanie súborov. | ||
| + | ==== Prvé spustenie ==== | ||
| - | == Prvé spustenie == | + | Textový editor sa spúšťa pomocou príkazu '' |
| - | Textový editor sa spúšťa pomocou príkazu //vi//. Ako argument[link na vysvetlenie argumentu] je mu predaný názov súboru ktorý sa chystáme upravovať. | + | Pokiaľ súbor s poskytnutým názvom neexistuje, vi vytvorí nový súbor v [[link na vysvetlenie, co je aktualny adresar|aktuálnom adresári]]. |
| - | + | ||
| - | Pokiaľ súbor s poskytnutým názvom neexistuje, vi vytvorí nový súbor v aktuálnom adresári. | + | |
| Po spustení sa príkazový riadok nahradí náhľadom obsahu súboru. Vlnovky označujú prázdne riadky na konci súboru. Vľavo dolu sa zobrazí názov súboru, počet jeho riadkov a znakov alebo informácia o tom, že sa vytvoril nový súbor. Na tomto mieste sa budú zobrazovať aj informácie o iných vykonaných zmenách. V pravo dole je percentuálna alebo slovná reprezentácia pozície v dokumente. | Po spustení sa príkazový riadok nahradí náhľadom obsahu súboru. Vlnovky označujú prázdne riadky na konci súboru. Vľavo dolu sa zobrazí názov súboru, počet jeho riadkov a znakov alebo informácia o tom, že sa vytvoril nový súbor. Na tomto mieste sa budú zobrazovať aj informácie o iných vykonaných zmenách. V pravo dole je percentuálna alebo slovná reprezentácia pozície v dokumente. | ||
| - | == Módy editora == | + | ==== Módy editora |
| - | Editor vi má tri používané módy - základný, insert a vizuálny. V **základnom** móde je konzola pripravená prijímať nové príkazy v podobe jednotlivých kláves alebo slovné príkazy v podobe reťazcov začínajúcich dvojbodkou. Každá klávesa môže mať svoj špecifický význam. Napríklad stlačením klávesy | + | Editor vi má tri používané módy - základný, insert a vizuálny. V **základnom** móde je konzola pripravená prijímať nové príkazy v podobe jednotlivých kláves alebo slovné príkazy v podobe reťazcov začínajúcich dvojbodkou. Každá klávesa môže mať svoj špecifický význam. Napríklad stlačením klávesy |
| - | Zo základného módu sa stlačením | + | Zo základného módu sa stlačením |
| - | Tretí z používaných módov je **vizuálny** a spúšťa sa pomocou klávesy | + | Tretí z používaných módov je **vizuálny** a spúšťa sa pomocou klávesy |
| - | == Navigácia v súbore v základnom móde == | + | ==== Navigácia v súbore v základnom móde ==== |
| - | Napravo vidíme aktuálnu pozíciu kurzoru vo formáte riadok, | + | Napravo vidíme aktuálnu pozíciu kurzoru vo formáte riadok, |
| - | * Presun kurzora na začiatok súboru - //G// | + | * Presun kurzora na začiatok súboru - **'' |
| - | * Presun kurzora na koniec súboru - | + | * Presun kurzora na koniec súboru - |
| - | * Skoč na riadok - //<číslo riadku>G// (napríklad | + | * Skoč na riadok - **'' |
| - | == Príkazy začínajúce dvojbodkou == | + | ==== Príkazy začínajúce dvojbodkou |
| Editor vi umožňuje vykonávanie zložitejších výkonov pomocou krátkych interpretácií príkazov. Toto je užitočné napríklad keď je potrebné: | Editor vi umožňuje vykonávanie zložitejších výkonov pomocou krátkych interpretácií príkazov. Toto je užitočné napríklad keď je potrebné: | ||
| - | * zobraziť čísla riadkov - //:set nu// | + | * zobraziť čísla riadkov - **'' |
| - | * inak zmeniť nastavenie editora | + | * inak zmeniť nastavenie editora |
| - | * pozmeniť slovo alebo výraz na riadku - //: | + | * pozmeniť slovo alebo výraz na riadku - **'' |
| * a mnoho iných. | * a mnoho iných. | ||
| - | == Návrat k príkazovému riadku (ukončenie vi) == | + | ==== Návrat k príkazovému riadku (ukončenie vi) ==== |
| A teraz to najdôležitejšie! Ako to všetko uložiť a vrátiť sa k príkazovému riadku. Na to nám slúžia príkazy začínajúce dvojbodkou v základnom móde: | A teraz to najdôležitejšie! Ako to všetko uložiť a vrátiť sa k príkazovému riadku. Na to nám slúžia príkazy začínajúce dvojbodkou v základnom móde: | ||
| - | * uloženie a návrat do CLI- //:wq// | + | * uloženie a návrat do CLI - **'' |
| - | * návrat do CLI bez uloženia - //:q!// | + | * návrat do CLI bez uloženia - **'' |
| + | |||
| + | ==== Ako sa stať kúzelníkom pri editovaní ==== | ||
| + | |||
| + | Obsah toho krátkeho tréningu bol len základ. Editor vi a jeho vylepšený brat **vim** poskytuje mnoho nástrojov a rozšírení, | ||
| - | == Ako sa stať kúzelníkom pri editovaní | + | ===== Dotazy a diskuse ===== |
| - | Obsah toho krátkeho tréningu bol len základ. Editor vi a jeho vylepšený brat **vim** poskytuje mnoho nástrojov a rozšírení, | + | Pokládat dotazy |