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 | ||
| navody:fc6prompt [2006/09/24 10:57] – macky | navody:fc6prompt [2022/11/14 11:25] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 18: | Řádek 18: | ||
| V případě, že adresář, ve kterém se nachází daný příkaz, není definován v proměnné '' | V případě, že adresář, ve kterém se nachází daný příkaz, není definován v proměnné '' | ||
| - | Příkazový řádek otevřete v grafickém prostředí //Gnome// pomocí nabídky //Aplikace -> Příslušenství -> Terminál// | + | S pojmem příkaz je velice často spojován pojem přepínač. |
| **Poznámka: | **Poznámka: | ||
| + | |||
| + | ==== Terminál ==== | ||
| + | Příkazový řádek otevřete v grafickém prostředí //Gnome// pomocí nabídky //Aplikace -> Příslušenství -> Terminál// | ||
| + | V historii zadaných příkazů můžete listovat pomocí šipky nahoru a dolů. Dále je možné automaticky doplňovat názvy souborů a adresářů pomocí klávesy tabelator (stačí napsat část názvu souboru nebo adresáře a stisknout klávesu tabelatoru).\\ | ||
| + | Chcete-li zamezit pípání terminálu, klikněte v okně terminálu na //Upravit -> Aktuální profil...// a odškrtněte položku //pípání terminálu// | ||
| + | Chcete-li terminál otevřít pomocí nabídky, kterou získáte poklepáním na plochu, zadejte do příkazové řádky | ||
| + | |||
| + | yum -y install nautilus-open-terminal | ||
| + | |||
| + | Terminál pak otevřete kliknutím pravého tlačítka myši a výběrem //Otevřít terminál// z předložené nabídky. | ||
| ==== Obecné informace === | ==== Obecné informace === | ||
| Řádek 51: | Řádek 61: | ||
| ls -la | ls -la | ||
| - | Znak středník | + | Znak středník |
| cd /usr/sbin; ls -la | cd /usr/sbin; ls -la | ||
| Řádek 70: | Řádek 80: | ||
| ls -la *tex*.t* | ls -la *tex*.t* | ||
| - | Zástupný znak hvězdička | + | Zástupný znak hvězdička |
| ls -la text.t?? | ls -la text.t?? | ||
| - | Libovolný znak z vybrané skupiny znaků lze zapsat pomocí dvojice hranatých závorek | + | Libovolný znak z vybrané skupiny znaků lze zapsat pomocí dvojice hranatých závorek |
| ls -la text_[a, | ls -la text_[a, | ||
| Řádek 112: | Řádek 122: | ||
| V prvním případě jednoduché uvozovky " | V prvním případě jednoduché uvozovky " | ||
| - | Mezi znaky interpretované //shell//em patří vedle mezery např. zástupné znaky, ampersand | + | Mezi znaky interpretované //shell//em patří vedle mezery např. zástupné znaky, ampersand |
| === Apostrof === | === Apostrof === | ||
| Řádek 121: | Řádek 131: | ||
| echo $pracovni_adresar | echo $pracovni_adresar | ||
| - | **Poznámka: | + | **Poznámka: |
| === Přesměrování výstupu === | === Přesměrování výstupu === | ||
| Řádek 147: | Řádek 157: | ||
| === Příkazy spouštěné na pozadí === | === Příkazy spouštěné na pozadí === | ||
| - | Standardně jsou příkazy spouštěné na popředí. To znamená, že příkazový řádek je příkazem " | + | Standardně jsou příkazy spouštěné na popředí. To znamená, že příkazový řádek je příkazem " |
| sleep 60& | sleep 60& | ||
| Řádek 156: | Řádek 166: | ||
| příkazový řádek na 60 sekund. Po tuto dobu nemůže uživatel zadávat další příkazy a musí čekat, než příkaz skončí. | příkazový řádek na 60 sekund. Po tuto dobu nemůže uživatel zadávat další příkazy a musí čekat, než příkaz skončí. | ||
| - | |||
| - | |||
| ==== Uživatelé ==== | ==== Uživatelé ==== | ||
| V //Linux//u rozlišujeme dvě základní kategorie úživatelů - běžného uživatele a tzv. superuživatele (root).\\ | V //Linux//u rozlišujeme dvě základní kategorie úživatelů - běžného uživatele a tzv. superuživatele (root).\\ | ||
| - | Účet superuživatele slouží pro správu systému. Tento uživatel tak může bez omezení přistupovat ke všem souborům, adresářům a procesům ((Proces lze zjednodušeně chápat jako spuštěnou aplikaci.)). Jeho práva jsou " | + | Účet superuživatele slouží pro správu systému. Tento uživatel tak může bez omezení přistupovat ke všem souborům, adresářům a procesům((Proces lze zjednodušeně chápat jako spuštěnou aplikaci.)). Jeho práva jsou " |
| Naproti tomu běžní uživatelé mohou v systému vykonávat pouze takové činnosti, které jim dovolují přidělená práva. Standardně tato práva spravuje právě superuživatel.\\ | Naproti tomu běžní uživatelé mohou v systému vykonávat pouze takové činnosti, které jim dovolují přidělená práva. Standardně tato práva spravuje právě superuživatel.\\ | ||
| Řádek 235: | Řádek 243: | ||
| Rozdíl oproti výše uvedené syntaxi je v tom, že se Vám nastaví kompletní //shell// prostředí daného uživatele (tj. včetně případných proměnných a dalších vlastností). | Rozdíl oproti výše uvedené syntaxi je v tom, že se Vám nastaví kompletní //shell// prostředí daného uživatele (tj. včetně případných proměnných a dalších vlastností). | ||
| - | |||
| ==== Základní informace o systému ==== | ==== Základní informace o systému ==== | ||
| Řádek 252: | Řádek 259: | ||
| | | ||
| macky | macky | ||
| + | |||
| + | === hostname === | ||
| + | '' | ||
| + | |||
| + | hostname | ||
| + | | ||
| + | localhost.localdomain | ||
| === free === | === free === | ||
| Řádek 297: | Řádek 311: | ||
| | | ||
| která vypíše volné místo v // | která vypíše volné místo v // | ||
| + | |||
| + | **Poznámka: | ||
| ====Práce se soubory==== | ====Práce se soubory==== | ||
| - | Každý soubor a adresář ((Adresář je, pro někoho možná překvapivě, | + | Každý soubor a adresář((Adresář je, pro někoho možná překvapivě, |
| === cd === | === cd === | ||
| Řádek 332: | Řádek 348: | ||
| drwx------ | drwx------ | ||
| drwxrwxrwx | drwxrwxrwx | ||
| + | |||
| + | První blok znaků označuje typ souboru((Klasické soubory jsou označeny pomlčkou '' | ||
| === du === | === du === | ||
| Řádek 346: | Řádek 364: | ||
| ... | ... | ||
| - | vypíše seznam souborů a adresářů obsažených v adresáři ''/ | + | vypíše seznam souborů a adresářů obsažených v adresáři ''/ |
| du -h /home/macky | du -h /home/macky | ||
| + | | ||
| ... | ... | ||
| 4.1M / | 4.1M / | ||
| Řádek 360: | Řádek 378: | ||
| du -s /home/macky | du -s /home/macky | ||
| - | naproti tomu vypíše pouze jedno číslo odpovídající velikosti diskového prostoru, který zabírá adresář ''/ | + | naproti tomu vypíše pouze jedno číslo odpovídající velikosti diskového prostoru, který zabírá adresář ''/ |
| du -sh /home/macky | du -sh /home/macky | ||
| Řádek 413: | Řádek 431: | ||
| === mv === | === mv === | ||
| - | '' | + | '' |
| mv -f zdrojovy_soubor cilovy_soubor | mv -f zdrojovy_soubor cilovy_soubor | ||
| Řádek 426: | Řádek 444: | ||
| find adresar_k_prohledani -name " | find adresar_k_prohledani -name " | ||
| - | Následující příkaz vyhledá všechny textové soubory začínající velkým písmenem v celém systému ((Adresář ''/'' | + | Následující příkaz vyhledá všechny textové soubory začínající velkým písmenem v celém systému((Adresář ''/'' |
| find / -name " | find / -name " | ||
| - | Databázi je pak možné aktualizovat z účtu superuživatele pomocí | + | Jestliže chcete omezit vyhledávání na soubory, které někdo modifikoval před '' |
| - | | + | |
| + | |||
| + | Jestliže chcete omezit vyhledávání na soubory, ke kterým někdo přistupoval před '' | ||
| + | |||
| + | find / -mtime pocet_dnu -name " | ||
| === locate === | === locate === | ||
| Řádek 440: | Řádek 462: | ||
| + | Databázi je pak možné aktualizovat z účtu superuživatele pomocí příkazu | ||
| + | |||
| + | updatedb | ||
| === ln === | === ln === | ||
| - | '' | + | '' |
| - | Symblický | + | Symbolický |
| + | Pevný link je odkazem přímým - není tvořen samostatným souborem ale pouze odkazem v adresáři. | ||
| - | Symbolický link vytvoříme pomocí | + | Nastavením práv uživatele k linku nedochází automaticky k nastavení práv k příslušnému souboru. Práva je třeba nastavit zvlášť.\\ |
| + | |||
| + | Symbolický link vytvoříte pomocí | ||
| ln -s zdrojovy_soubor nazev_linku | ln -s zdrojovy_soubor nazev_linku | ||
| Řádek 453: | Řádek 481: | ||
| ln zdrojovy_soubor nazev_linku | ln zdrojovy_soubor nazev_linku | ||
| - | **Poznámka: | + | Výhoda linků je zřejmá - umožnují elegantně obcházet potřebu kopírování souborů, jestliže je potřebujete na " |
| + | |||
| + | **Poznámka: | ||
| === mc === | === mc === | ||
| Řádek 463: | Řádek 493: | ||
| yum -y install mc | yum -y install mc | ||
| + | |||
| + | {{ navody: | ||
| ==== Výpis obsahu souborů ==== | ==== Výpis obsahu souborů ==== | ||
| Řádek 484: | Řádek 516: | ||
| less text.txt | less text.txt | ||
| + | |||
| + | ==== Práce s textem ==== | ||
| === grep === | === grep === | ||
| - | '' | + | '' |
| + | |||
| + | Následující | ||
| cat text.txt | grep inux | cat text.txt | grep inux | ||
| + | |||
| + | Jestliže použijete přepínač '' | ||
| + | |||
| + | cat text.txt | grep -v inux | ||
| + | |||
| + | Počet řádek, které obsahují hledaný řetězec, získáte pomocí přepínače '' | ||
| + | |||
| + | cat text.txt | grep -c inux | ||
| + | |||
| + | Pro jmenný seznam souborů, které obsahují alespoň jednou hledaný řetězec, použijte přepínač '' | ||
| + | |||
| + | grep -l *.txt | ||
| + | |||
| + | Pomocí přepínače '' | ||
| + | |||
| + | cat text.text | grep -i inux | ||
| + | |||
| + | === head === | ||
| + | '' | ||
| + | |||
| + | head -pocet_radku text.txt | ||
| + | |||
| + | === tail === | ||
| + | '' | ||
| + | |||
| + | tail -pocet_radku text.txt | ||
| + | |||
| + | === cut === | ||
| + | '' | ||
| + | |||
| + | Uvažujme následující soubor '' | ||
| + | |||
| + | Josef; | ||
| + | Jan; | ||
| + | Petr; | ||
| + | |||
| + | Pomocí příkazu | ||
| + | |||
| + | cut -c5 text.txt | ||
| + | |||
| + | získáme z každé řádky 5. znak. Příkazem | ||
| + | |||
| + | cut -c1,3,5 text.txt | ||
| + | |||
| + | pak vyberete z každé řádky 1., 3. a 5. znak. Sekvenci 1. až 5. znaku z každého řádku lze získat pomocí | ||
| + | |||
| + | cut -c1-5 text.txt | ||
| + | |||
| + | Budeme-li chtít pole definovat pomocí oddělovače '';'', | ||
| + | |||
| + | cut -d';' | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | Jestliže v daném souboru chcete zpracovat pouze řádky, které obsahují oddělovač, | ||
| + | |||
| + | cut -s -d';' | ||
| + | |||
| + | === join === | ||
| + | Příkaz '' | ||
| + | Uvažujme soubor '' | ||
| + | |||
| + | Josef; | ||
| + | Jan; | ||
| + | Petr; | ||
| + | |||
| + | a soubor '' | ||
| + | |||
| + | Petr; | ||
| + | Pavel; | ||
| + | |||
| + | Výsledkem příkazu | ||
| + | |||
| + | join text1.txt text2.txt > text.txt | ||
| + | |||
| + | bude soubor '' | ||
| + | |||
| + | Petr; | ||
| + | |||
| + | === tr === | ||
| + | '' | ||
| + | |||
| + | Uvažujme soubor '' | ||
| + | |||
| + | Josef; | ||
| + | Jan; | ||
| + | Petr; | ||
| + | |||
| + | Příkaz | ||
| + | |||
| + | tr JNPBDO jnpbdo < text1.txt > text2.txt | ||
| + | |||
| + | vytvoří soubor '' | ||
| + | |||
| + | josef; | ||
| + | jan; | ||
| + | petr; | ||
| + | |||
| + | Systematičtější řešení tohoto problému přestavuje příkaz | ||
| + | |||
| + | tr [A-Z] [a-z] < text1.txt > text2.txt | ||
| + | |||
| + | Jestliže chcete namísto záměny znaků provést jejich výmaz, stačí použít přepínač '' | ||
| + | |||
| + | tr -d ';' | ||
| + | | ||
| + | **Poznámka: | ||
| + | |||
| + | === wc === | ||
| + | Příkaz '' | ||
| + | |||
| + | wc -c text.txt | ||
| + | | ||
| + | 25 | ||
| + | |||
| + | === comm === | ||
| + | '' | ||
| + | |||
| + | comm text1.txt text2.txt | ||
| + | |||
| + | Jestliže chcete potlačit výstup některého ze sloupců, použijte jako přepínač jeho pořadové číslo. | ||
| + | |||
| + | comm -1 -2 text1.txt text2.txt | ||
| + | |||
| + | === sort === | ||
| + | '' | ||
| + | |||
| + | sort pripadne_prepinace nazev_souboru | ||
| + | |||
| + | kde '' | ||
| + | |||
| + | Níže uvedená tabulka uvádí seznam nejdůležitějších přepínačů příkazů '' | ||
| + | |||
| + | ^ Přepínač | ||
| + | | bez přepínače | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | sort -dfr text.txt | ||
| + | sort -t';' | ||
| + | sort -m text1.txt text2.txt | ||
| + | |||
| + | === uniq === | ||
| + | |||
| + | '' | ||
| + | |||
| + | Příkaz | ||
| + | |||
| + | sort text.txt | uniq | ||
| + | |||
| + | vypíše obsahu souboru '' | ||
| + | |||
| + | Příkaz | ||
| + | |||
| + | sort text.txt | uniq -u | ||
| + | |||
| + | výpíše jedinečné řádky souboru '' | ||
| + | |||
| + | Příkaz | ||
| + | |||
| + | sort text.txt | uniq -d | ||
| + | |||
| + | naopak vypíše duplicitní řádky (každý duplicitní řádek pouze jednou), které jsou obsaženy v souboru '' | ||
| + | |||
| + | Pomocí přepínače '' | ||
| + | |||
| + | sort text.txt | uniq -c | ||
| ==== Definování přístupových práv ==== | ==== Definování přístupových práv ==== | ||
| - | Jak již bylo zmíměno v kapitole [[navody:fc6prompt21#Práce se soubory]], každý soubor a adresář má svého vlastníka. Ten pak určuje, jaké operace mohou s těmito soubory / adresáři provádět ostatní uživatelé. Standardně se jedná v případě souborů o právo čtění (read), zápisu (write) a spouštění (execute); v případě adresáře pak o právo prohlížení obsahu (ekvivalent práva čtení), manipulace se soubory (ekvivalent práva zápisu) a právo zobrazovat informace o souborech (ekvivalent práva spouštění)((Vedle majitele souboru / adresáře může o těchto právech rozhodovat také superuživatel. Jakákoliv nastavení provedená vlastníkem souboru / adresáře nemají vliv na práva superuživatele - ta jsou totiž vždy " | + | Jak již bylo zmíměno v kapitole [[navody:fc6prompt#Práce se soubory]], každý soubor a adresář má svého vlastníka. Ten pak určuje, jaké operace mohou s těmito soubory / adresáři provádět ostatní uživatelé. Standardně se jedná v případě souborů o právo čtění (read), zápisu (write) a spouštění (execute); v případě adresáře pak o právo prohlížení obsahu (ekvivalent práva čtení), manipulace se soubory (ekvivalent práva zápisu) a právo zobrazovat informace o souborech (ekvivalent práva spouštění)((Vedle majitele souboru / adresáře může o těchto právech rozhodovat také superuživatel. Jakákoliv nastavení provedená vlastníkem souboru / adresáře nemají vliv na práva superuživatele - ta jsou totiž vždy " |
| Předpokládejme, | Předpokládejme, | ||
| Řádek 500: | Řádek 710: | ||
| ´-rwxr-xr-x 1 macky skupina 23056 čec 26 23:10 Derivates.tex | ´-rwxr-xr-x 1 macky skupina 23056 čec 26 23:10 Derivates.tex | ||
| - | První znak pomlčka | + | První znak pomlčka |
| === chgrp === | === chgrp === | ||
| Řádek 538: | Řádek 748: | ||
| ponechává vlastníkovi všechna práva, skupině vlastníka pak práva čtení a spouštění a ostatním uživatelům jsou odebrána všechna práva.\\ | ponechává vlastníkovi všechna práva, skupině vlastníka pak práva čtení a spouštění a ostatním uživatelům jsou odebrána všechna práva.\\ | ||
| - | Standardně jsou tato implicitní práva specifikována v souboru ''/ | + | Standardně jsou tato implicitní práva specifikována v souboru ''/ |
| ==== Řízení procesů ==== | ==== Řízení procesů ==== | ||
| Řádek 569: | Řádek 779: | ||
| ps aux | grep macky | ps aux | grep macky | ||
| + | |||
| + | === top === | ||
| + | |||
| + | Dalším z příkazů, který souvisí s procesy, se tzv. '' | ||
| + | |||
| + | top | ||
| === kill === | === kill === | ||
| - | Příkaz '' | + | Příkaz '' |
| kill pid_procesu | kill pid_procesu | ||
| Řádek 579: | Řádek 795: | ||
| ps aux | ps aux | ||
| - | Každý uživatel může " | + | Každý uživatel může " |
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | === nice a renice === | ||
| + | Systémové prostředky (např. procesorový čas a paměť) jsou " | ||
| + | |||
| + | Pomocí příkazů '' | ||
| + | |||
| + | Běžný uživatel může " | ||
| + | |||
| + | Pomocí příkazu '' | ||
| + | |||
| + | nice -n 5 / | ||
| + | |||
| + | Prioritu již spuštěného přikazu lze změnit pomocí '' | ||
| + | |||
| + | renice 10 pid_procesu | ||
| + | |||
| + | Hodnotu //PID// daného procesu lze získat např. pomocí '' | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | ==== Matematika z příkazové řádky ==== | ||
| + | |||
| + | === Proměnné === | ||
| + | |||
| + | Proměnné v unixových systémech nemají přiřazen typ proměnné - všechny proměnné považuje //shell// za proměnné typu text. | ||
| + | Proměnná se vytvoří specifikací jejího jména a přiřazením hodnoty a není ji tak potřeba před použitím deklarovat. Jméno proměnné musí vždy začínat písmenem. | ||
| + | K hodnotám uloženým v proměnné se přistupuje pomocí znaku dolar '' | ||
| + | |||
| + | '' | ||
| + | |||
| + | x=5 | ||
| + | echo $x | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | Po definovaní existuje proměnná v //shell//u až do jeho ukončení. V případě, že chcete proměnnou odstranit před ukončením //shell//u, použijte příkaz '' | ||
| + | |||
| + | unset x | ||
| + | |||
| + | Kromě hodnot proměnných je možné příkaz '' | ||
| + | |||
| + | echo "Hello World!" | ||
| + | |||
| + | x=10 | ||
| + | echo " | ||
| + | |||
| + | Hodnotu proměnné je možné zadávat také interaktivně. K tomuto účelu slouží příkaz '' | ||
| + | |||
| + | read x | ||
| + | 10 | ||
| + | echo $x | ||
| + | 10 | ||
| + | |||
| + | Jestliže chcete přiřadit hodnotu proměnné na základě výstupu příkazu použijte syntaxi | ||
| + | |||
| + | x=`prikaz` | ||
| + | |||
| + | === expr === | ||
| + | Hodnotu jednoduchých výrazů lze vypočítat pomocí příkazu '' | ||
| + | |||
| + | echo `expr 1 '<' | ||
| + | 1 | ||
| + | |||
| + | echo `expr 1 '>' | ||
| + | 0 | ||
| + | |||
| + | echo `expr 5 ' | ||
| + | 1 | ||
| + | |||
| + | echo `expr 1 '&' | ||
| + | 0 | ||
| + | |||
| + | x = `expr 1 ' | ||
| + | echo $x | ||
| + | 7 | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | x=1 | ||
| + | y=$x+1 | ||
| + | echo $y | ||
| + | 1+1 | ||
| + | |||
| + | x=1 | ||
| + | y=`expr $x+1` | ||
| + | echo $y | ||
| + | 2 | ||
| + | |||
| + | Příkaz '' | ||
| + | |||
| + | echo `expr length " | ||
| + | 11 | ||
| + | |||
| + | Následující příkaz vybere specifikovaný podřetězec. | ||
| + | |||
| + | echo `expr substr " | ||
| + | Core | ||
| + | |||
| + | Pomocí níže uvedeného příkazu je možné otestovat, zda-li řetězec obsahuje hledaný podřetězec. Příkaz standardně vrací číslo první pozice znaku řetezce, který se shoduje s některým ze znaků podřetězce. V případě, že se řetězec a podřetězec neshodují ani v jednom znaku, vrátí příkaz hodnotu nula. | ||
| + | |||
| + | echo `expr index " | ||
| + | 2 | ||
| + | |||
| + | echo `expr index " | ||
| + | 0 | ||
| + | |||
| + | === bc === | ||
| + | '' | ||
| + | |||
| + | bc -l | ||
| + | |||
| + | bc 1.06 | ||
| + | Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. | ||
| + | This is free software with ABSOLUTELY NO WARRANTY. | ||
| + | For details type `warranty`. | ||
| + | 1/3 | ||
| + | .333333333333333333333 | ||
| + | 1 < 0 | ||
| + | 0 | ||
| + | 5*(1/3+1) | ||
| + | 6.66666666666666666666 | ||
| + | quit | ||
| + | |||
| + | ==== Tisk z příkazové řádky ==== | ||
| + | |||
| + | Pro tisk z příkazové řádky se používají příkazy '' | ||
| + | |||
| + | Z příkazové řádky je možné přímo tisknout textové a postscriptové soubory((Ostatní soubory - např. s příponou '' | ||
| + | |||
| + | lpr text.txt | ||
| + | |||
| + | Tento příkaz zařadí tiskovou úlohu do fronty výchozí tiskárny. Jestliže máte tiskáren více, je možné požadovanou tiskárnu specifikovat pomocí přepínače '' | ||
| + | |||
| + | lpr -Pjmeno_tiskarny text.txt | ||
| + | |||
| + | Seznam dostupných tiskáren získáte pomocí příkazu | ||
| + | |||
| + | cat / | ||
| + | |||
| + | tiskarna|HP Inkjet: | ||
| + | |||
| + | Dle výše uvedeného výpisu je k dispozici pouze jedna tiskárna, která se jmenuje '' | ||
| + | |||
| + | Seznam úloh, které se momentálně nachází v tiskové frontě získáte pomocí příkazu '' | ||
| + | |||
| + | lpq | ||
| + | |||
| + | Rank Owner Job File(s) | ||
| + | 1st | ||
| + | |||
| + | lpq -Pjmeno_tiskarny | ||
| + | |||
| + | Rank Owner Job File(s) | ||
| + | 1st | ||
| + | |||
| + | Konkrétní úlohu je možné z tiskové fronty odstranit příkazem '' | ||
| + | |||
| + | lprm cislo_tiskove_ulohy | ||
| + | |||
| + | lprm -Pjmeno_tiskarny cislo_tiskove_ulohy | ||
| + | |||
| + | Parametr '' | ||
| + | |||
| + | Tiskové úlohy konkrétního uživatele odstraníte pomocí | ||
| + | |||
| + | lprm jmeno_uzivatele | ||
| + | |||
| + | popř. | ||
| + | |||
| + | lprm -Pjmeno_tiskarny jmeno_uzivatele | ||
| + | |||
| + | Všechny tiskové úlohy lze odstranit příkazem | ||
| + | |||
| + | lprm - | ||
| + | |||
| + | popř. | ||
| + | |||
| + | lprm - -Pjmeno_tiskarny | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | **Tip:** Manuálové stránky lze tisknout příkazem | ||
| + | |||
| + | man klicove_slovo | col -b | lpr -Pjmeno_tiskarny | ||
| ==== Vypnutí / restart počítače ==== | ==== Vypnutí / restart počítače ==== | ||
| Řádek 592: | Řádek 994: | ||
| / | / | ||
| - | ===== Další informace ===== | + | ==== Aliasy ==== |
| + | |||
| + | Alias umožňuje definovat definovat souslednost příkazů a těm následně přiřadit jméno. Aliasy jsou svojí logikou velice blízké níže popisovaným funkcím. Základním rozdílem však je rychlost. Funkce je spouštěna přímo v aktuálním //shell//u, a proto je rychlejší než alias, který je spouštěn v " | ||
| + | |||
| + | Seznam všech aliasů definovaných ve Vašem systému zíkáte příkazem | ||
| + | |||
| + | alias | ||
| + | |||
| + | alias l.='ls -d .* --color=tty' | ||
| + | alias ll='ls -l --color=tty' | ||
| + | alias ls='ls --color=tty' | ||
| + | alias mc='. / | ||
| + | alias which=' | ||
| + | |||
| + | Definovat novy alias lze snadno pomocí následující syntaxe | ||
| + | |||
| + | alias turnoff=' | ||
| + | |||
| + | Pokud výše uvedený alias spustíte z účtu superuživatele, | ||
| + | |||
| + | turnoff | ||
| + | |||
| + | ==== Programování ==== | ||
| + | |||
| + | //Shell// je možné použít jako programovací jazyk. Není sice tak všestranný jako např. //Java// nebo //C++//, ale přesto je možné s jeho využitím řešit řadu problémů. Následující kapitola předpokládá znalost základních příkazů a představuje tak zakončení této kapitoly. | ||
| + | |||
| + | === Skript === | ||
| + | |||
| + | V souvislosti s //shell//em a programováním se často mluví o tzv. skriptu. Skript není nic jiného než textový soubor, který má pro vybrané skupiny uživatelů nastaveno právo | ||
| + | |||
| + | === Argumenty předávané skriptu === | ||
| + | |||
| + | Skriptu je možné předávat hodnoty pomocí argumentů. K tomu slouží deset tzv. pozičních parametrů, které odpovídají speciálním // | ||
| + | |||
| + | Vytvořte následující soubor, který pojmenujte součet. | ||
| + | |||
| + | gedit ~/soucet | ||
| + | |||
| + | Do souboru vložte následující řádky | ||
| + | |||
| + | # Skript pro soucet dvou cisel | ||
| + | echo " | ||
| + | echo "Pocet zadanych paremetru je " $# " | ||
| + | echo "Jedna se o nasledujici parametry: " $* | ||
| + | exit | ||
| + | |||
| + | Soubor '' | ||
| + | |||
| + | chmod u+x ~/soucet | ||
| + | |||
| + | a daný skript spusťte. | ||
| + | |||
| + | ~/soucet 7 8 | ||
| + | |||
| + | Soucet cisel 7 a 8 je 15 . | ||
| + | Pocet zadanych parametru je 2. | ||
| + | Jedna se o nasledujici parametry: | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | === Příkazy větvení === | ||
| + | |||
| + | == if == | ||
| + | |||
| + | Syntaxe příkazu '' | ||
| + | |||
| + | if vyraz | ||
| + | then | ||
| + | | ||
| + | fi | ||
| + | |||
| + | if vyraz | ||
| + | then | ||
| + | | ||
| + | else | ||
| + | | ||
| + | fi | ||
| + | |||
| + | if vyraz_1 | ||
| + | then | ||
| + | prikazy | ||
| + | elif vyraz_2 | ||
| + | then | ||
| + | prikazy | ||
| + | else | ||
| + | prikazy | ||
| + | fi | ||
| + | Výraz '' | ||
| + | |||
| + | # ilustracni priklad | ||
| + | if x=`expr 1 ' | ||
| + | then | ||
| + | echo " | ||
| + | else | ||
| + | echo " | ||
| + | fi | ||
| + | exit | ||
| + | |||
| + | ./skript | ||
| + | pravda | ||
| + | |||
| + | # ilustracni priklad | ||
| + | if x=`expr 1 ' | ||
| + | then | ||
| + | echo " | ||
| + | else | ||
| + | echo " | ||
| + | fi | ||
| + | exit | ||
| + | |||
| + | ./skript | ||
| + | expr: non-numeric argument | ||
| + | nepravda | ||
| + | |||
| + | Jestliže chcete, aby výraz '' | ||
| + | |||
| + | # ilustracni priklad | ||
| + | if test 0 -le 1 | ||
| + | then | ||
| + | echo " | ||
| + | else | ||
| + | echo " | ||
| + | fi | ||
| + | exit | ||
| + | |||
| + | ./skript | ||
| + | pravda | ||
| + | |||
| + | # ilustracni priklad | ||
| + | if test 2 -le 1 | ||
| + | then | ||
| + | echo " | ||
| + | else | ||
| + | echo " | ||
| + | fi | ||
| + | exit | ||
| + | |||
| + | ./skript | ||
| + | nepravda | ||
| + | |||
| + | Vedle operátoru '' | ||
| + | |||
| + | ^ Operátor ^ Význam ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | Dále je možné používat také speciální " | ||
| + | |||
| + | # ilustracni priklad | ||
| + | if test -f " | ||
| + | then | ||
| + | echo " | ||
| + | else | ||
| + | echo " | ||
| + | fi | ||
| + | exit | ||
| + | |||
| + | Následující tabulka představuje kompletní seznam těchto speciálních přepínačů. | ||
| + | |||
| + | ^ Operátor ^ Význam ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | == case == | ||
| + | Tuto funkci lze použít k zjednodušení komplexnějších kontrukcí obsahujících podmínku. Syntaxe je obdobná jako v jiných programovacích jazycích. | ||
| + | |||
| + | # NAZEV SKRIPTU: vypocti | ||
| + | # ilustracni priklad | ||
| + | case $2 in | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | '/' | ||
| + | *) echo " | ||
| + | esac | ||
| + | exit | ||
| + | |||
| + | ./vypocti 6 / 2 | ||
| + | 3 | ||
| + | |||
| + | ./vypocti 6 podil 2 | ||
| + | 3 | ||
| + | |||
| + | ./vypocti 6 deleno 2 | ||
| + | Neznamy operator! | ||
| + | |||
| + | Výše uvedený skript vyžaduje tři parametry. Skript podle hodnoty druhého parametru určí typ matematické operace. Následně provede příslušnou operaci s prvním a třetím parametrem. V kódu je také ošetřen případ, kdy druhý parametr nenabyde žádné z očekávaných hodnot. | ||
| + | |||
| + | == Konstruktory && a || == | ||
| + | |||
| + | Konstruktory ''&&'' | ||
| + | |||
| + | Konstruktor ''&&'' | ||
| + | |||
| + | uname | grep Linux i686 && echo " | ||
| + | |||
| + | Konstruktor '' | ||
| + | |||
| + | uname -m | grep i686 || echo " | ||
| + | |||
| + | === Cykly === | ||
| + | |||
| + | == for == | ||
| + | |||
| + | Příkaz '' | ||
| + | |||
| + | Následující syntaxe způsobí, že cyklus proběhne tolikrát, kolik je zadáno parametrů, přičemž proměnná '' | ||
| + | |||
| + | # ilustracni priklad | ||
| + | for x | ||
| + | do | ||
| + | echo " | ||
| + | done | ||
| + | |||
| + | ./skript 1 2 3 | ||
| + | Parametr: 1 | ||
| + | Parametr: 2 | ||
| + | Parametr: 3 | ||
| + | |||
| + | Níže uvedený cyklus proběhne tolikrát, kolik je uvedeno hodnot za klíčovým slovem '' | ||
| + | |||
| + | # ilustracni priklad | ||
| + | for x in `ls -d *` | ||
| + | do | ||
| + | echo "V pracovnim adresari se nachazi soubor / adresar: "$x | ||
| + | done | ||
| + | |||
| + | == while == | ||
| + | |||
| + | Příkaz '' | ||
| + | |||
| + | while vyraz | ||
| + | do | ||
| + | prikazy | ||
| + | done | ||
| + | |||
| + | Ve výrazu '' | ||
| + | |||
| + | ^ Operátor ^ Význam ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | Následující skript vypíše čísla od 1 do 100. | ||
| + | |||
| + | # NAZEV SKRIPTU: skript | ||
| + | # ilustracni priklad | ||
| + | a=1 | ||
| + | while [ $a -le 100 ] | ||
| + | do | ||
| + | echo $a | ||
| + | a=`expr $a ' | ||
| + | done | ||
| + | |||
| + | == until == | ||
| + | |||
| + | Příkaz '' | ||
| + | |||
| + | until vyraz | ||
| + | do | ||
| + | prikazy | ||
| + | done | ||
| + | |||
| + | |||
| + | V rámci příkazu '' | ||
| + | Následující ilustrační skript vypíše čísla od 110 do 100. | ||
| + | |||
| + | # NAZEV SKRIPTU: skript | ||
| + | # ilustracni priklad | ||
| + | a=111 | ||
| + | until [ $a = 100 ] | ||
| + | do | ||
| + | a=`expr $a ' | ||
| + | echo $a | ||
| + | done | ||
| + | |||
| + | == Přerušení cyklu == | ||
| + | |||
| + | K přerušení cyklu slouží příkazy '' | ||
| + | |||
| + | Příkaz '' | ||
| + | |||
| + | # NAZEV SKRIPTU: skript | ||
| + | # ilustracni priklad | ||
| + | for x in $* | ||
| + | do | ||
| + | case $x in | ||
| + | | ||
| + | *) echo $x "neni ciselny parametr!" | ||
| + | esac | ||
| + | done | ||
| + | exit | ||
| + | |||
| + | ./skript 8 9 | ||
| + | 8 je ciselny parametr. | ||
| + | 64 | ||
| + | 9 je ciselny parametr. | ||
| + | 81 | ||
| + | |||
| + | ./skript 8 a 9 | ||
| + | 8 je ciselny parametr. | ||
| + | 64 | ||
| + | a neni ciselny parametr! | ||
| + | |||
| + | Příkaz '' | ||
| + | |||
| + | # NAZEV SKRIPTU: skript | ||
| + | # ilustracni priklad | ||
| + | for x in $* | ||
| + | do | ||
| + | case $x in | ||
| + | [0-9]) echo $x "je ciselny parametr." | ||
| + | *) echo $x "neni ciselny parametr!" | ||
| + | esac | ||
| + | done | ||
| + | exit | ||
| + | |||
| + | ./skript 8 9 | ||
| + | 8 je ciselny parametr. | ||
| + | 64 | ||
| + | 9 je ciselny parametr. | ||
| + | 81 | ||
| + | |||
| + | ./skript 8 a 9 | ||
| + | 8 je ciselny parametr. | ||
| + | 64 | ||
| + | a neni ciselny parametr! | ||
| + | 9 je ciselny parametr. | ||
| + | 81 | ||
| + | |||
| + | === Funkce === | ||
| + | |||
| + | V //shell//u je možné definovat funkce, které umožňují redukovat množství kódu a tím přispět k jeho zpřehlednění. | ||
| + | Funkce se chová jako libovolný příkaz. To znamená, že je schopna přebírat hodnoty argumentů a vrací hodnotu. | ||
| + | |||
| + | jmeno_funkce () | ||
| + | { | ||
| + | prikazy | ||
| + | } | ||
| + | |||
| + | Následující funkce vyhledá soubory a adresáře. Jako prvni parametr je zadána část jména hledaného souboru popř. adresáře. Ostatní parametry představují adresáře, které mají být prohledány. Je-li zadán pouze první parametr, prohledává se celý systém souborů. | ||
| + | |||
| + | # NAZEV SKRIPTU: skript | ||
| + | # ilustracni priklad | ||
| + | searchfile() | ||
| + | { | ||
| + | case $# in | ||
| + | 0) | ||
| + | echo " | ||
| + | 1) | ||
| + | echo " | ||
| + | find / -name " | ||
| + | *) | ||
| + | for x in $2 $3 $4 $5 $6 $7 $8 $9 | ||
| + | do | ||
| + | echo " | ||
| + | find $x -name " | ||
| + | done;; | ||
| + | esac | ||
| + | return 0 | ||
| + | } | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | Aby bylo možné funkci používat, je třeba nejprve načíst soubor, který obsahuje definice funkcí. Přesuňte se do adresáře, který obsahuje tento soubor a do příkazové řádky zadejte | ||
| + | |||
| + | . jmeno_souboru_s_funkcemi | ||
| + | |||
| + | Po té je možné funkci spouštět přímo z příkazové řádky jako běžný příkaz. Výše definovanou funkci je možné např. spustit pomocí | ||
| + | |||
| + | searchfile txt /opt /home | ||
| + | |||
| + | ... | ||
| + | text.txt | ||
| + | ... | ||
| + | |||
| + | ==== Konfigurační soubory .bashrc a rc.local ==== | ||
| + | |||
| + | Jestliže chcete, aby se určité příkazy, skripty nebo aliasy automaticky spouštěly při přihlášení se do systému, je třeba je přidat do konfiguračních souborů.\\ | ||
| + | Konkrétně se jedná soubor '' | ||
| + | |||
| + | ==== Periodické spouštění procesů ==== | ||
| + | * Přečtěte si kapitolu [[navody: | ||
| + | |||
| + | === cron === | ||
| + | Jestliže chcete spouštět skript((Skript je soubor, který obsahuje posloupnost příkazů a který má nastaveno právo spouštění.)) s určitou periodicitou, | ||
| + | |||
| + | Další možností je vytvořit si vlastní konfigurační soubor '' | ||
| + | Syntaxe tohoto konfiguračního souboru je následující | ||
| + | |||
| + | minuta hodina den mesic den_v_tydnu [jmeno_uzivatele] prikaz | ||
| + | |||
| + | ^ **Pole** ^ **Popis** ^ **Rozsah** ^ | ||
| + | | minuta | minuta příslušného hodiny | 0 - 59 | | ||
| + | | hodina | hodina příslušného dne | 0 - 23 | | ||
| + | | den | den v měsíci | 1 - 31 | | ||
| + | | mesic | měsíc v roce | 1 - 12 | | ||
| + | | den_v_tydnu | den v týdnu | 0 - 6 (0 = neděle)| | ||
| + | |||
| + | Každé pole navíc může obsahovat znak: | ||
| + | - hvězdička ('' | ||
| + | - dvě čísla oddělená pomlčkou, která značí rozsah hodnot | ||
| + | - seznam čísel popř. rozsahů oddělených čárkou | ||
| + | |||
| + | '' | ||
| + | |||
| + | Následující konfigurační soubor spusti '' | ||
| + | |||
| + | #crontab - ilustracni priklad | ||
| + | 0 12 1 1 * | ||
| + | 0 3 * * 1-5 prikaz2 | ||
| + | 0 * * * * | ||
| + | |||
| + | ** Poznámka: | ||
| + | |||
| + | #crontab - ilustracni priklad | ||
| + | 0 12 1 * 5 prikaz | ||
| + | |||
| + | tak nespustí '' | ||
| + | |||
| + | O spouštění souborů v adresáří ''/ | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | === at === | ||
| + | Jestliže chcete spustit příkaz či skript v danou dobu a nechcete k tomu použít '' | ||
| + | |||
| + | at 11pm | ||
| + | at> / | ||
| + | at> | ||
| + | |||
| + | Stiskněte // | ||
| + | |||
| + | Job at 2007-01-04 23:00 | ||
| + | |||
| + | ==== Další informace ==== | ||
| + | |||
| + | === man === | ||
| Bližší informace o výše uváděných příkazech můžete získat pomocí | Bližší informace o výše uváděných příkazech můžete získat pomocí | ||
| Řádek 614: | Řádek 1465: | ||
| of -cftuSUX nor --sort. | of -cftuSUX nor --sort. | ||
| ... | ... | ||
| - | + | ||
| + | === apropos === | ||
| + | | ||
| Informace uvedené v sekci //NAME// jsou využívány příkazem '' | Informace uvedené v sekci //NAME// jsou využívány příkazem '' | ||
| Například seznam všech manuálových stránek, které se váží ke slovu //file//, získáte pomocí | Například seznam všech manuálových stránek, které se váží ke slovu //file//, získáte pomocí | ||
| Řádek 620: | Řádek 1473: | ||
| apropos file | apropos file | ||
| - | Dalším užitečným příkazem pro získání nápovědy je '' | + | === info === |
| + | |||
| + | Dalším užitečným příkazem pro získání nápovědy je '' | ||
| info ls | info ls | ||
| Řádek 642: | Řádek 1497: | ||
| | | ||
| ... | ... | ||
| - | | ||
| - | |||
| - | | ||
| ===== ===== | ===== ===== | ||
| [[navody: | [[navody: | ||