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 | |||
navody:f7prompt [2007/09/02 20:34] – macky | navody:f7prompt [2022/11/14 11:25] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
+ | [[navody: | ||
+ | |||
+ | ===== 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 [[navody: | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ==== Definování přístupových práv ==== | ||
+ | Jak již bylo zmíměno v kapitole [[navody: | ||
+ | \\ | ||
+ | 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 [[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 //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 | ||
+ | |||
+ | ===== ===== | ||
+ | [[navody: |