Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| navody:f8:prompt [2008/04/22 21:06] – vytvořeno covex | navody:f8:prompt [2022/11/14 11:26] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| + | [[obsah|Hlavní stránka]] | ||
| + | |||
| + | ===== Základy příkazové řádky ===== | ||
| + | {{: | ||
| + | I když již není znalost unixových příkazů pro soužití s //Linux//em natolik důležitá jako dříve, není od věci osvojit si alespoň několik základních příkazů. Důvodem je, že | ||
| + | " | ||
| + | |||
| + | V následujícím textu budeme zaměňovat pojmy příkazový řádek a terminál. Příkazovým řádkem / terminálem budeme rozumět rozhraní, pomocí něhož zadává uživatel příkazy. Dalším pojmem, se kterým se zde můžete setkat, je //shell//. //shell// je zjednodušeně řečeno software, který umožňuje komunikaci mezi uživatelem a jádrem //OS Linux// - je totiž zodpovědný za interpertaci příkazů zadávaných uživatelem prostřednictvím příkazového řádku. //shell// tak brání tomu, aby uživatelé přistupovali přímo k jádru, což lze chápat do jisté míry jako bezpečnostní prvek.\\ | ||
| + | Pro //OS Linux// bylo vyvinuto několik // | ||
| + | |||
| + | Dalším hojně používaným pojmem je příkaz. Příkaz není v podstatě nic jiného než soubor, který má nastaveno právo spouštění (viz. kapitola [[prompt# | ||
| + | |||
| + | ls -la | ||
| + | |||
| + | Je však možné také zadat kompletní cestu. | ||
| + | |||
| + | /bin/ls -la | ||
| + | |||
| + | V případě, že adresář, ve kterém se nachází daný příkaz, není definován v proměnné '' | ||
| + | |||
| + | S pojmem příkaz je velice často spojován pojem přepínač. Přepínač lze chápat jako fakultativní parametr, který modifikuje chování příkazu. Jednotlivé přepínače lze velice často mezi sebou kombinovat. Např. v případě příkazu '' | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | ==== Terminál ==== | ||
| + | Příkazový řádek otevřete v grafickém prostředí //Gnome// pomocí nabídky //Aplikace -> Systémové nástroje -> 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 === | ||
| + | |||
| + | === Jména souborů a adresářů === | ||
| + | |||
| + | Unixové systémy včetně //Linux//u rozlišují velikost písmen v názvech souborů a adresářů. '' | ||
| + | \\ | ||
| + | Při volbě jmen souborů a adresářů je také vhodné se vyvarovat českých znaků, mezer a jiných speciálních znaků. Více o problematice těchto znaků v názvech souborů a adresárů naleznete v kapitole //Použití závorek a zpětného lomítka// | ||
| + | |||
| + | === Proměnná PATH === | ||
| + | Jak již bylo zmíněno v úvodu, aby bylo možné spustit daný příkaz pouze zadáním jména bez specifikování celé cesty, musí být adresář, ve kterém je příkaz uložen, definován v proměnné '' | ||
| + | |||
| + | echo $PATH | ||
| + | | ||
| + | / | ||
| + | |||
| + | Na výše uvedeném výpisu je vidět, že proměnná '' | ||
| + | V případě, že soubor sice existuje, avšak jeho adresář není specifikován v proměnné '' | ||
| + | |||
| + | /bin/ls -la | ||
| + | |||
| + | Druhou možností je pak přidat daný adresář do proměnné '' | ||
| + | Adresář ''/ | ||
| + | |||
| + | $PATH = echo $PATH:/ | ||
| + | |||
| + | === Spuštení vícero příkazů === | ||
| + | Standardně zapisujeme jeden příkaz na jeden řádek. | ||
| + | |||
| + | cd /usr/sbin | ||
| + | ls -la | ||
| + | |||
| + | Znak středník '';'' | ||
| + | |||
| + | cd /usr/sbin; ls -la | ||
| + | |||
| + | Tento zápis je ekvivalentní s výše uvedeným. | ||
| + | |||
| + | === Zástupné znaky === | ||
| + | |||
| + | Zástupné znaky (tzv. // | ||
| + | Uvažujme soubory '' | ||
| + | |||
| + | ls -la text.txt | ||
| + | ls -la text.tex | ||
| + | ls -ls latex.tex | ||
| + | |||
| + | nebo jeden příkaz. | ||
| + | |||
| + | ls -la *tex*.t* | ||
| + | |||
| + | Zástupný znak hvězdička '' | ||
| + | |||
| + | ls -la text.t?? | ||
| + | |||
| + | Libovolný znak z vybrané skupiny znaků lze zapsat pomocí dvojice hranatých závorek '' | ||
| + | |||
| + | ls -la text_[a, | ||
| + | |||
| + | vypíše údaje o souborech '' | ||
| + | |||
| + | ls -la text_[A-B].txt | ||
| + | |||
| + | zase vypíše údaje o souborech '' | ||
| + | |||
| + | ls -la text_[0-9].txt | ||
| + | |||
| + | Chcete-li získat údaje pro všechny soubory, použijte syntaxi | ||
| + | |||
| + | ls -la text_[0-9, a-z, A-Z].txt | ||
| + | |||
| + | |||
| + | Informace o všech souborech kromě souboru '' | ||
| + | |||
| + | ls -la text_[!2].txt | ||
| + | |||
| + | === Použití závorek a zpětného lomítka === | ||
| + | Způsob, jakým //shell// vyhodnocuje zadané příkazy, si v některých případech může vynutit použití závorek popř. zpětného lomítka. Klasickým příkladem jsou mezery v názvech souborů a adresářů běžně používané v OS typu Windows. Jestliže budete mít adresář '' | ||
| + | |||
| + | cd jmeno adresare | ||
| + | |||
| + | interpretován stejně jako kdybyste zadali pouze | ||
| + | |||
| + | cd jmeno | ||
| + | |||
| + | Tento problém se dá vyřešit třemi způsoby. | ||
| + | |||
| + | cd 'jmeno adresare' | ||
| + | cd "jmeno adresare" | ||
| + | cd jmeno\ adresare | ||
| + | |||
| + | V prvním případě jednoduché uvozovky " | ||
| + | |||
| + | Mezi znaky interpretované //shell//em patří vedle mezery např. zástupné znaky, ampersand ''&'', | ||
| + | |||
| + | === Apostrof === | ||
| + | |||
| + | Jestliže text uzavřete do apostrofů, bude text zpracován jako příkaz a na jeho místo bude dosazen výstup tohoto příkazu. | ||
| + | |||
| + | $pracovni_adresar=`pwd` | ||
| + | echo $pracovni_adresar | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | === Přesměrování výstupu === | ||
| + | Řada programů produkuje určitý výstup. Například příkaz | ||
| + | |||
| + | ls -la | ||
| + | |||
| + | vypíše na obrazovku obsah pracovního adresáře. Ta je v tomto případě tzv. standardním výstupem. Kdybyste však chtěli výstup tohoto příkazu zapsat do souboru, museli byste tento výstup přesměrovat. K tomu slouží znaky ''>'' | ||
| + | |||
| + | ls -la > obsah_adresare.txt | ||
| + | ls -la >> obsah_adresare.txt | ||
| + | |||
| + | Pomocí prvního příkazu vytvoříte soubor '' | ||
| + | |||
| + | V některých případech může být žádoucí výstup příkazu zahodit. V tomto případě přesměrujte výstup do adresáře ''/ | ||
| + | |||
| + | ls -la > /dev/null | ||
| + | |||
| + | === Roury === | ||
| + | Roura je mechanismus, | ||
| + | |||
| + | cat text.txt | grep Linux | ||
| + | |||
| + | Příkaz nalevo od " | ||
| + | |||
| + | === 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 " | ||
| + | |||
| + | sleep 60& | ||
| + | |||
| + | Narozdíl od výše uvedené syntaxe, zablokuje příkaz | ||
| + | |||
| + | sleep 60 | ||
| + | |||
| + | 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é ==== | ||
| + | |||
| + | 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 " | ||
| + | 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.\\ | ||
| + | |||
| + | Každý z uživatelů patří minimálně do jedné skupiny uživatelů, | ||
| + | |||
| + | === useradd === | ||
| + | Příkaz '' | ||
| + | |||
| + | / | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | === userdel === | ||
| + | '' | ||
| + | |||
| + | / | ||
| + | |||
| + | odstraníte ze systému uživatele '' | ||
| + | |||
| + | === groupadd === | ||
| + | Příkaz '' | ||
| + | |||
| + | / | ||
| + | |||
| + | === groupdel === | ||
| + | '' | ||
| + | |||
| + | cat /etc/group | grep skupina | ||
| + | | ||
| + | skupina: | ||
| + | |||
| + | Seznam uživatelů této skupiny získáme pomocí | ||
| + | |||
| + | cat /etc/passwd | grep 501 | ||
| + | | ||
| + | uzivatel: | ||
| + | |||
| + | Nejprve je třeba odstranit uživatele, po té je možné odstranit skupinu. | ||
| + | |||
| + | / | ||
| + | / | ||
| + | |||
| + | === passwd === | ||
| + | Příkaz '' | ||
| + | |||
| + | Své heslo můžete změnit pomocí | ||
| + | |||
| + | passwd | ||
| + | |||
| + | Superuživatel pak může změnit heslo jiného uživatele pomocí | ||
| + | |||
| + | passwd jmeno_uzivatele | ||
| + | |||
| + | === su === | ||
| + | '' | ||
| + | |||
| + | Změnu uživatele na superuživatele provedete pomocí | ||
| + | |||
| + | su | ||
| + | |||
| + | popř. | ||
| + | |||
| + | su root | ||
| + | |||
| + | Jestliže chcete změnit svou " | ||
| + | |||
| + | su jmeno_uzivatele | ||
| + | |||
| + | '' | ||
| + | |||
| + | su - jmeno_uzivatele | ||
| + | |||
| + | 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 ==== | ||
| + | |||
| + | === uname === | ||
| + | '' | ||
| + | |||
| + | uname -a | ||
| + | | ||
| + | Linux localhost.localdomain 2.6.17-1.2139_FC5 #1 Fri Jun 23 12:40:16 EDT 2006 i686 athlon i386 GNU/Linux | ||
| + | |||
| + | === whoami === | ||
| + | '' | ||
| + | |||
| + | whoami | ||
| + | | ||
| + | macky | ||
| + | |||
| + | === hostname === | ||
| + | '' | ||
| + | |||
| + | hostname | ||
| + | | ||
| + | localhost.localdomain | ||
| + | |||
| + | === free === | ||
| + | '' | ||
| + | |||
| + | free | ||
| + | | ||
| + | Mem: 515696 | ||
| + | -/+ buffers/ | ||
| + | Swap: 0 0 0 | ||
| + | |||
| + | === w === | ||
| + | '' | ||
| + | |||
| + | w | ||
| + | | ||
| + | 18:15:43 up 1:11, 3 users, | ||
| + | USER | ||
| + | macky :0 | ||
| + | macky pts/1 :0.0 | ||
| + | macky pts/2 :0.0 | ||
| + | |||
| + | === df === | ||
| + | '' | ||
| + | |||
| + | df | ||
| + | | ||
| + | Filesystem | ||
| + | / | ||
| + | tmpfs | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | |||
| + | Informace zde uváděné jsou v tzv. blocích, které mají standardně velikost 1//kB//. Pokud Vám tento formát přijde nepřehledný, | ||
| + | |||
| + | df -h | ||
| + | | ||
| + | Filesystem | ||
| + | / | ||
| + | tmpfs | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | | ||
| + | která vypíše volné místo v // | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | ====Práce se soubory==== | ||
| + | |||
| + | Každý soubor a adresář((Adresář je, pro někoho možná překvapivě, | ||
| + | |||
| + | === cd === | ||
| + | '' | ||
| + | Následujícím příkazem nastavíte adresář ''/ | ||
| + | |||
| + | cd /opt/games | ||
| + | |||
| + | Příkaz | ||
| + | |||
| + | cd sauerbraten | ||
| + | |||
| + | Vás přesune do podadresáře '' | ||
| + | |||
| + | V prvním zápise je použita tzv. absolutní cesta k adresáři, v druhém pak cesta relativní. Absolutní cesta vždy začíná lomítkem ''/'', | ||
| + | |||
| + | === pwd === | ||
| + | '' | ||
| + | |||
| + | pwd | ||
| + | | ||
| + | / | ||
| + | |||
| + | === ls === | ||
| + | Pomocí '' | ||
| + | |||
| + | ls -la /opt | ||
| + | | ||
| + | drwxr-xr-x | ||
| + | drwxr-xr-x 24 root root 4096 Aug 27 17:04 .. | ||
| + | drwx------ | ||
| + | drwxrwxrwx | ||
| + | |||
| + | První blok znaků označuje typ souboru((Klasické soubory jsou označeny pomlčkou '' | ||
| + | |||
| + | === du === | ||
| + | '' | ||
| + | |||
| + | Příkaz | ||
| + | |||
| + | du /home/macky | ||
| + | | ||
| + | ... | ||
| + | 4128 / | ||
| + | ... | ||
| + | 51900 / | ||
| + | ... | ||
| + | |||
| + | vypíše seznam souborů a adresářů obsažených v adresáři ''/ | ||
| + | |||
| + | du -h /home/macky | ||
| + | | ||
| + | ... | ||
| + | 4.1M / | ||
| + | ... | ||
| + | 51M / | ||
| + | ... | ||
| + | |||
| + | Příkaz | ||
| + | |||
| + | du -s /home/macky | ||
| + | |||
| + | naproti tomu vypíše pouze jedno číslo odpovídající velikosti diskového prostoru, který zabírá adresář ''/ | ||
| + | |||
| + | du -sh /home/macky | ||
| + | | ||
| + | 566M /home/macky | ||
| + | |||
| + | === file === | ||
| + | '' | ||
| + | |||
| + | file / | ||
| + | | ||
| + | text.txt: ASCII text | ||
| + | |||
| + | === rm === | ||
| + | Příkaz '' | ||
| + | |||
| + | rm -ri /opt/games | ||
| + | |||
| + | Při specifikaci souborů je možné použít zástupné znaky. | ||
| + | |||
| + | rm -ri / | ||
| + | rm -ri / | ||
| + | |||
| + | === rmdir === | ||
| + | '' | ||
| + | |||
| + | rmdir /opt/games | ||
| + | |||
| + | Stejně jako '' | ||
| + | |||
| + | === touch === | ||
| + | Příkaz '' | ||
| + | |||
| + | touch text.txt | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | man rmdir > manualove_stranky_mrdir.txt | ||
| + | |||
| + | === mkdir === | ||
| + | '' | ||
| + | |||
| + | mkdir /opt/games | ||
| + | |||
| + | === cp === | ||
| + | |||
| + | '' | ||
| + | |||
| + | cp zdrojove_soubory cilovy_soubor_nebo_adresar | ||
| + | |||
| + | Pomocí výše uvedené syntaxe překopírujeme všechny soubory do cílového adresáře. Příkaz '' | ||
| + | |||
| + | === mv === | ||
| + | '' | ||
| + | |||
| + | mv -f zdrojovy_soubor cilovy_soubor | ||
| + | mv -f zdrojovy_adresar cilovy_adresar | ||
| + | mv -f seznam_zdrojovych_souboru cilovy_adresar | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | === find === | ||
| + | Pomocí '' | ||
| + | |||
| + | 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ář ''/'' | ||
| + | |||
| + | find / -name " | ||
| + | |||
| + | Jestliže chcete omezit vyhledávání na soubory, které někdo modifikoval před '' | ||
| + | |||
| + | find / -atime pocet_dnu -name " | ||
| + | |||
| + | Jestliže chcete omezit vyhledávání na soubory, ke kterým někdo přistupoval před '' | ||
| + | |||
| + | find / -mtime pocet_dnu -name " | ||
| + | |||
| + | === locate === | ||
| + | Příkaz '' | ||
| + | |||
| + | locate [A-Z]*.txt | ||
| + | |||
| + | |||
| + | Databázi je pak možné aktualizovat z účtu superuživatele pomocí příkazu | ||
| + | |||
| + | updatedb | ||
| + | |||
| + | === ln === | ||
| + | '' | ||
| + | Symbolický link je položka v adresáři, která obsahuje cestu k souboru popř. adresáři, na který se odkazuje. Pokud tedy např. provádíte " | ||
| + | Pevný link je odkazem přímým - není tvořen samostatným souborem ale pouze odkazem v adresáři. Pevný link může odkazovat pouze na soubor a děje se tak nikoliv pomocí cesty ale prostřednictvím tzv. // | ||
| + | |||
| + | 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 | ||
| + | |||
| + | pevný link pak pomocí | ||
| + | |||
| + | ln zdrojovy_soubor nazev_linku | ||
| + | |||
| + | 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 | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | yum -y install mc | ||
| + | |||
| + | {{ navody: | ||
| + | |||
| + | ==== Výpis obsahu souborů ==== | ||
| + | |||
| + | === cat === | ||
| + | '' | ||
| + | |||
| + | cat text.txt | ||
| + | |||
| + | Výpis obsahu souboru je možné přesměrovat do nového souboru. | ||
| + | |||
| + | cat text.txt > novy_textovy_soubor.txt | ||
| + | |||
| + | === more === | ||
| + | '' | ||
| + | |||
| + | more text.txt | ||
| + | |||
| + | === less === | ||
| + | Ačkoliv je název možná trochu matoucí, umí toho příkaz '' | ||
| + | |||
| + | less text.txt | ||
| + | |||
| + | ==== Práce s textem ==== | ||
| + | |||
| + | === grep === | ||
| + | '' | ||
| + | |||
| + | Následující příkaz vypíše všechny řádky souboru '' | ||
| + | |||
| + | 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 obsah 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 | ||
| + | |||
| + | === nano === | ||
| + | |||
| + | //nano// není příkazem ale jednoduchým textovým editorem. Pomocí této aplikace je možné provádět úpravy konfiguračních a textových souborů. | ||
| + | |||
| + | {{ navody: | ||
| + | |||
| + | Tuto aplikaci nainstalujete pomocí | ||
| + | |||
| + | yum -y install nano | ||
| + | |||
| + | popř. přímo z instalačního CD pomocí | ||
| + | |||
| + | umount /dev/cdrom | ||
| + | mount -t iso9660 /dev/cdrom /mnt | ||
| + | rpm -ivh / | ||
| + | |||
| + | za předpokladu, | ||
| + | |||
| + | nano cesta_k_souboru/ | ||
| + | |||
| + | Nápověda k ovládání aplikace je zobrazena u dolního okraje příslušného okna. Znak '' | ||
| + | |||
| + | ==== Definování přístupových práv ==== | ||
| + | Jak již bylo zmíměno v kapitole [[prompt# | ||
| + | \\ | ||
| + | |||
| + | Předpokládejme, | ||
| + | |||
| + | ls -la / | ||
| + | |||
| + | zobrazil výpis | ||
| + | |||
| + | ´-rwxr-xr-x 1 macky skupina 23056 čec 26 23:10 Derivates.tex | ||
| + | |||
| + | První znak '' | ||
| + | |||
| + | === chgrp === | ||
| + | Příkaz '' | ||
| + | |||
| + | chgrp nova_skupina jmeno_souboru_nebo_adresar | ||
| + | |||
| + | === chown === | ||
| + | Příkaz '' | ||
| + | |||
| + | chown novy_vlastnik jmeno_souboru_nebo_adresare | ||
| + | |||
| + | === chmod === | ||
| + | Pomocí příkazu '' | ||
| + | V prvním případě nejprve specifikujete skupinu uživatelů, | ||
| + | Následující příkaz přidá vlastníkovi a jeho skupině práva čtení a zápisu pro soubor '' | ||
| + | |||
| + | chmod ug+rw soubor | ||
| + | |||
| + | Druhá varianta zápisu využívá čísel. | ||
| + | |||
| + | ^ ^ čtení ^ zápis ^ spouštění ^ | ||
| + | ^ vlastník | ||
| + | ^ skupina | ||
| + | ^ ostatní | ||
| + | |||
| + | Výsledná práva jsou dána součtem čísel uvedených v tabulce. Například příkaz | ||
| + | |||
| + | chmod 750 soubor | ||
| + | |||
| + | nastaví vlastníkovi všechna práva, skupině vlastníka právo čtení a spouštění. Ostatním uživatelům nebyla přidělena žádná práva. Výsledné číslo 750 je tedy součtem čísel 400, 200, 100, 40 a 10. | ||
| + | |||
| + | === umask === | ||
| + | Pomocí příkazu '' | ||
| + | |||
| + | umask 027 | ||
| + | |||
| + | 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 ''/ | ||
| + | |||
| + | ==== Řízení procesů ==== | ||
| + | Procesem budeme pro účely této kapitoly rozumnět jakýkoliv spuštěný program. Každému procesu jsou pak jádrem přiřazovány systémové zdroje (tj. procesor a paměť). | ||
| + | |||
| + | === ps === | ||
| + | Pomocí příkazu '' | ||
| + | |||
| + | ps aux | ||
| + | | ||
| + | USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND | ||
| + | root | ||
| + | root | ||
| + | root | ||
| + | root | ||
| + | root | ||
| + | root | ||
| + | root 2045 0.0 0.8 11480 4636 ? S 20:24 0:00 python ./hpssd.py | ||
| + | root 2057 0.0 0.5 | ||
| + | postgres | ||
| + | postgres | ||
| + | postgres | ||
| + | postgres | ||
| + | postgres | ||
| + | macky | ||
| + | macky | ||
| + | ... | ||
| + | |||
| + | Z výše uvedeného výpisu lze pro každý proces zjistit uživatele, který jej spustil (položka //USER//) a identifikační číslo procesu (položka //PID//). Vzhledem k tomu, že tento výpis může být vcelku dlouhý, je vhodné použít také příkaz '' | ||
| + | |||
| + | ps aux | grep macky | ||
| + | |||
| + | === top === | ||
| + | |||
| + | Dalším z příkazů, který souvisí s procesy, je '' | ||
| + | |||
| + | top | ||
| + | |||
| + | === kill === | ||
| + | Příkaz '' | ||
| + | |||
| + | kill pid_procesu | ||
| + | |||
| + | //PID// daného procesu lze získat pomocí příkazu | ||
| + | |||
| + | ps aux | ||
| + | |||
| + | 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 definování 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` | ||
| + | |||
| + | === Globální proměnné === | ||
| + | |||
| + | Proměnné definované podle výše uvedeného textu budou definovány pouze v aktuálním //shell//u. Jestliže tedy otevřete nové okno s příkazovou řádkou, tuto proměnnou v něm " | ||
| + | |||
| + | export $promenna | ||
| + | |||
| + | ** Tip:** Jestliže potřebujete, | ||
| + | |||
| + | $promenna = hodnota | ||
| + | export $promenna | ||
| + | |||
| + | === 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: | ||
| + | \\ | ||
| + | Vzhledem k tomu, že proměnnými je v unixových systémech nakládáno jako s řetězcem, je třeba použít příkaz '' | ||
| + | |||
| + | 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 ==== | ||
| + | |||
| + | Počítač lze z účtu superuživatele vypnout pomocí příkazu | ||
| + | |||
| + | / | ||
| + | |||
| + | a restartovat pomocí | ||
| + | |||
| + | / | ||
| + | |||
| + | Jako běžný uživatel můžete pro restart použít příkaz | ||
| + | |||
| + | reboot | ||
| + | |||
| + | a pro vypnutí systému příkaz | ||
| + | |||
| + | poweroff | ||
| + | |||
| + | **Poznámka: | ||
| + | |||
| + | ==== Aliasy ==== | ||
| + | |||
| + | Alias umožňuje 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 nový 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 && 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 [[obsah|Obecné poznámky]]. | ||
| + | |||
| + | === 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 //Ctrl+D//. | ||
| + | |||
| + | 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í | ||
| + | |||
| + | man prikaz | ||
| + | |||
| + | Např. manuálovou stránku příkazu '' | ||
| + | |||
| + | man ls | ||
| + | | ||
| + | LS(1) User Commands | ||
| + | | ||
| + | NAME | ||
| + | ls - list directory contents | ||
| + | | ||
| + | SYNOPSIS | ||
| + | ls [OPTION]... [FILE]... | ||
| + | | ||
| + | DESCRIPTION | ||
| + | List information about the FILEs (the current directory by default). | ||
| + | of -cftuSUX nor --sort. | ||
| + | ... | ||
| + | |||
| + | === info === | ||
| + | |||
| + | Dalším užitečným příkazem pro získání nápovědy je '' | ||
| + | |||
| + | info ls | ||
| + | | ||
| + | | ||
| + | File: coreutils.info, | ||
| + | | ||
| + | 10.1 `ls': List directory contents | ||
| + | ================================== | ||
| + | | ||
| + | The `ls' program lists information about files (of any type, including | ||
| + | directories). | ||
| + | arbitrarily, | ||
| + | | ||
| + | For non-option command-line arguments that are directories, | ||
| + | default `ls' lists the contents of directories, | ||
| + | omitting files with names beginning with `.' | ||
| + | arguments, by default `ls' lists just the file name. If no non-option | ||
| + | argument is specified, `ls' operates on the current directory, acting | ||
| + | as if it had been invoked with a single argument of `.'. | ||
| + | | ||
| + | ... | ||
| + | |||
| + | === apropos === | ||
| + | |||
| + | 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í | ||
| + | |||
| + | apropos file | ||
| + | |||
| + | ===== ===== | ||
| + | [[obsah|Hlavní stránka]] | ||