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