UNIX z pohledu uživatele 1 Operační systém UNIX Nejzákladnější komponenty:! jádro (kernel)! shell! utility Jádro operačního systému! v podstatě představuje vlastní operační systém! fyzicky je to jediný soubor, který je umístěn v kořenovém adresáři! při inicializaci je zavedeno do paměti, zůstává zde celou dobu práce počítače (do jeho shození)! komunikuje s hardwarem (fyzickými zařízeními systému)! komunikuje se systémovým shellem Hlavní úkoly jádra: 1. přiděluje programům paměť (správa paměti) 2. rozděluje čas zpracování CPU a přiděluje jej jednotlivým programům (správa procesů) 3. obsluhuje všechny požadavky na vstup a výstup Procesy využívají jádra pomocí volání jádra (System Calls)
UNIX z pohledu uživatele 2 uživatel jádro technické vybavení jádro uživatel Programy procesy démoni Programy jsou uloženy jako soubory. (systém souborů) Proces je program, který se začal provádět. (dynamická běžící instance programu) V jednom okamžiku může běžet více kopií programu jako procesy nutnost procesy očíslovat pokaždé, když Unix spustí program, dá mu jedinečné identifikační číslo identifikace procesu (PID).
UNIX z pohledu uživatele 3 Démon je proces, který se provádí na pozadí. (např. existuje poštovní démon, který stále hledá zprávy, které se mají doručit) Většina démonů jsou programy, které se spouštějí při inicializaci systému. Jsou to procesy jádra, jsou stále aktivní a aktivují jiné procesy, které jsou zapotřebí. SHELL! interpret příkazů zajišťuje komunikaci počítače s uživatelem! umožňuje zadávat uživateli na vstupu příkazy ve vyšších jazycích a určuje, co se bude provádět! je zodpovědný za substituci příkazů a expanzi expanzních znaků (wildcards)! jednoduché (vnitřní) příkazy zpracovává sám! další příkazy posílá ke zpracování jinému shellu nebo jádru Realizace interního příkazu: požadavek uživatel shell odpověď
UNIX z pohledu uživatele 4 Další způsoby realizace uživatelských požadavků shellem pož. pož. uživatel shell subshell odp. odp. pož. pož. uživatel shell jádro odp. odp. Shelly:! Bourne shell! C Shell! Korn Shell UTILITY! říká se jim také příkazy či programy! jsou to spustitelné soubory, jsou uloženy v adresářích: /bin a /usr/bin! v současnosti obsahuje Unix asi 300 utilit a interních příkazů! liší se jednotlivé verze Unixu, všechny však obsahují standardní množinu programů
UNIX z pohledu uživatele 5 Služby shellu (komponenty shellu): 1. Interpretace příkazů a provádění příkazů 2. Programovací jazyk 3. Substituce proměnných 4. Přesměrování vstupů a výstupů 5. Uživatelské prostředí 6. Substituce jmen souborů 7. Roury Interpretace a provádění příkazů! Shell předpokládá, že příkazový řádek má tento formát: jméno_programu přepínače další argumenty! rozhoduje, zda zapsaný příkaz je interním nebo jiným příkazem! kontroluje správnost přepínačů a dalších argumentů! zajistí spuštění příkazu Programovací jazyk! jazyk vestavěný do shellu! využívá všech příkazů, které je možno zapsat do příkazové řádky
UNIX z pohledu uživatele 6 Přesměrování vstupu a výstupu! využívají se metaznaky: <, >, <<, >>! umožňuje uživateli zvolit, odkud přichází vstup do příkazu a kam směřuje výstup příkazu Uživatelské prostředí! domácí adresář uživatele! login shell uživatele! seznam adresářů, které se prohledávají při požadavku spuštění programu! další proměnné prostředí, které mohou být nastaveny i uživatelem Substituce proměnných! umožňuje přiřadit proměnným hodnoty, na které je možno se později odkazovat Substituce jmen souborů! umožňuje uživateli vyjádřit velmi krátce seznam jmen souborů, na které se odkazuje pomocí zápisu masky jména souborů! maska může obsahovat běžné alfanumerické znaky a expanzní znaky! expanzní znaky: *,?, [, ]
UNIX z pohledu uživatele 7 Roury! umožňují přesměrování výstupu jednoho příkazu na vstup jiného příkazu! znakem pro označení je (svislítko) (ALT + W (179))! nevytvářejí se dočasné soubory, které bychom museli smazat, jsou však spuštěny dva procesy (každý z jedné strany svislítka) Komunikace s shellem:! zahájení práce u počítače vytvoření tzv. session (spojení) pomocí přihlášení uživatele! zadání uživatelského jména a hesla! po správném zadání shell provede přihlašovací proceduru a spustí uživatelův login shell! zadávání příkazů z příkazové řádky, oddělovače: klávesa ENTER nebo znak ; (středník)! prompt - zobrazení (možnosti změn)! informace o chybách tzv. obsluha chyb Vlastnosti shellu Expanzní znaky (metaznaky, regulární výrazy): Hvězdička (*) zastupuje nula nebo více výskytů libovolných znaků
UNIX z pohledu uživatele 8 Příklady: A* zastupuje všechna jména souborů začínající na A * x * zastupuje všechna jména souborů mající ve jménu znak x *abc zastupuje všechna jména souborů která končí na abc Otazník (?) zastupuje právě jeden znak Příklady: gold? ls data?* všechny soubory mající jméno které začíná na gold a za ním ještě jeden znak vypíše všechny soubory, začínají na data a ještě následuje alespoň jeden znak? všechny soubory mající název právě jeden znak Hranaté závorky ( [ ] ) - je to tzv. seznam znaků, v řetězci se vyskytuje právě jeden znak z těch, které jsou uvedeny v závorkách Vykřičník (!) - shoda s kterýmkoliv znakem, kromě znaku uvedeného v závorce Znaménko mínus (-) - lze použít k zadání rozsahu písmen nebo číslic
UNIX z pohledu uživatele 9 Příklady: [abc] jeden ze znaků a,b,c [0-9] jedna z číslic [a-za-z0-9] libovolný alfanumerický znak [!a] libovolný znak kromě znaku a ls [xy]* Uvozovky: v Unixu je možno využít různých typů uvozovek: běžné uvozovky ( text ): používají se pro seskupení znaků, tvoří jediný argument příkazu jednoduché uvozovky ( text ) : znaky uvedené v řetězci se neinterpretují obrácené apostrofy (`text`) : umožňují provedení textu uvedeného v obrácených apostrofech jako příkazu a nahrazení celého řetězce standardním výstupem tohoto příkazu (využívá se pro substituci příkazů) Proměnné a uživatelské prostředí: využívají se pro dočasné uchování informací mohou mít libovolnou délku mohou obsahovat malá i velká písmena, čísla, speciální znaky
UNIX z pohledu uživatele 10 nesmí začínat číslem, obsahovat metaznaky shellu není třeba je deklarovat všechny jsou jediného datového typu typu řetězec Přiřazení hodnoty proměnné: read jméno_proměnné interní příkaz read umožní načtení hodnoty proměnné ze svého vstupu jméno_proměnné=hodnota přiřazovacím operátorem (=) se přiřadí proměnné zadaná hodnota jméno_proměnné=`příkaz` proměnné se přiřadí hodnota výstupu nějakého příkazu Přístup k hodnotě proměnné: echo $jméno_proměnné
UNIX z pohledu uživatele 11 Rozdělení shellovských proměnných: Podle způsobu definice a možnosti změn: 1. Uživatelské proměnné jsou definovány koncovým uživatelem 2. Systémové proměnné a)enviroment proměnné v širším slova smyslu jsou definovány při přihlášení uživatele do systému mohou se měnit jejich hodnoty lze je použít jak v příkazové řádce, tak v shellovském skriptu b)speciální shellovské proměnné využívají se v shellovských skriptech a popisují vlastnosti spuštěného shellovského skriptu Podle oboru platnosti: 1. ennvironment proměnné v širším slova smyslu jsou to proměnné prostředí, jsou viditelné ve všech programech 2. lokální proměnné je jí každá uživatelská proměnná možno ji exportovat do prostředí (příkaz export)