Petr Kulhánek kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Masarykova univerzita, Kotlářská 2, CZ-61137 Brno C2110 Operační systém UNIX a základy programování 2. lekce C2110 Operační systém UNIX a základy programování - 1 - ObsahObsah ➢ Textové editory vi, grafické textové editory ➢ Příkazová řádka terminály, struktura, historie a automatické dokončování ➢ Souborový systém struktura, absolutní a relativní cesty, práva, speciální soubory, diskové oddíly ➢ Příkazy manuálové stránky, přehled příkazů C2110 Operační systém UNIX a základy programování - 2 - Textové editory ➢ vi (vim) ➢ grafické textové editory (kwrite, kate, gedit, emacs, nedit atd.) C2110 Operační systém UNIX a základy programování - 3 - vivi Standardní textový editor v operačních systémech UNIXového typu. Pracuje pouze v textovém módu a jeho použivání je netriviální. Je vhodné se naučit, jak otevřít soubor, přejít do editačního módu, upravovat text, uložit provedené změny a editor ukončit. Dokumentace: ● manuálové stránky (man vi) ● přiložený přehled příkazů C2110 Operační systém UNIX a základy programování - 4 - vi - základyvi - základy Pracovní módy editoru rozšířený příkazový mód příkazový mód vkládací mód EscEnter a, c, i, o, s, A, C, I, O, R, S: Změny souboru i text bude vkládán od pozice kurzoru a text bude vkládán za pozici kurzoru Spuštění editoru Ukončení editoru vi start editoru vi filename start editoru a otevření souboru filename :q ukončení editoru :q! ukončení editoru bez uložení změn :w uložení souboru :w filename uložení souboru po jménem filename :wq ukončení s uložením souboru C2110 Operační systém UNIX a základy programování - 5 - kwritekwrite C2110 Operační systém UNIX a základy programování - 6 - katekate C2110 Operační systém UNIX a základy programování - 7 - geditgedit C2110 Operační systém UNIX a základy programování - 8 - Příkazová řádka ➢ Terminály ➢ Struktura příkazové řádky ➢ Historie a automatické doplňování C2110 Operační systém UNIX a základy programování - 9 - TerminályTerminály Příkazová řádka je přístupná přímo z textových terminálů. V grafickém prostředí X11 je nutné spustit vhodnou aplikaci emulující textový terminál. xterm konsole jednoduché, standard na všech UNIXových systémech jednoduché přitom značně konfigurovatelné, dostupné v prostředí KDE C2110 Operační systém UNIX a základy programování - 10 Výchozím adresářem je: /home/vas_login Struktura příkazové řádkyStruktura příkazové řádky kulhanek@wolfn ~$ jméno uživatele jméno počítače aktuální adresář (~ znamená domovský adresář /home/vas_login) typ uživatele ($ běžný uživatel, # superuživatel) místo pro příkaz Příkaz se vykoná zmáčknutím klávesy Enter. Na příkazové řádce lze uvést několik příkazů, je však nutné je oddělit znakem ;. [kulhanek@wolfn ~]$ echo "jedna"; echo "dve"; echo "tri" jedna dve tri [kulhanek@wolfn ~]$ Formát příkazové řádky lze změnit, viz. man bash (kapitola PROMPTING). C2110 Operační systém UNIX a základy programování - 11 - Historie a doplňováníHistorie a doplňování Historie: pomocí kurzorových šipek nahoru a dolů lze procházet seznamem již zadaných příkazů. Příkaz z historie lze znovu použít nebo upravit a upravený použít. Automatické doplňování: zmáčknutím klávesy Tab (tabulátor) se interpret příkazové řádky snaží dokončit rozepsané slovo. Doplňují se jména příkazů, cesty a jména souborů ... C2110 Operační systém UNIX a základy programování - 12 - Souborový systém ➢ Struktura souborového systému ➢ Hlavní rozdíly vůči operačnímu systému MS Windows ➢ Absolutní a relativní cesty ➢ Přístupová práva ➢ Speciální soubory ➢ Diskové oddíly a souborový systém C2110 Operační systém UNIX a základy programování - 13 - StrukturaStruktura Linux (jako UNIXový operační systém) využívá hiearchický adresářový souborový systém složený z adresářů a souborů. Všechny adresáře a soubory leží v jediném kořenovém adresáři. Domovský adresář: ● adresář sloužící pro data a nastavení uživatele ● obvykle v cestě /home/jmeno_uzivatele (k určení cesty je však lepší používat tildu ~, viz. absolutní cesty) C2110 Operační systém UNIX a základy programování - 14 - Srovnání s MS WindowsSrovnání s MS Windows C2110 Operační systém UNIX a základy programování - 15 Vlastnost Linux (ext2/ext3/ext4) MS Windows (FAT32,NTFS) Diskové oddíly (partitions) Ne Diskové oddíly se připojují jako adresáře. C:, D:, atd. Je však možné připojit I jako adresář (ntfs). Jména Rozlišuje malá a velká písmena (case sensitive). Nerozlišuje malá a velká písmena (case insensitive). Oddělování jmen Lomítko Zpětné lomítko Přístupová práva Ano POSIX Ano (pouze NTFS) ACL Zařízení (hardware) Jako speciální soubory. Ne CestyCesty /home/kulhanek/Documents /home/kulhanek/Documents/domaci_ukol.txt ~/Documents → /home/kulhanek/Documents ~alois/Documents → /home/alois/Documents Absolutní cesta je vždy uvedena vzhledem ke kořenovému nebo k domovskému adresáři. Musí tedy začínat buď lomítkem / nebo tildou ~. Cesta k adresáři nebo souboru může být uvedena jako absolutní nebo relativní. Jména adresářů a souborů se oddělují lomítkem /. Příklady absolutních cest: ~ domovský adresář přihlášeného uživatele ~user_name domovský adresář uživatele user_name Použití tildy: C2110 Operační systém UNIX a základy programování - 16 - CestyCesty Documents/domaci_ukol.txt ../alois/Documents ./muj_script Příklady relativních cest: Relativní cesta je cesta uvedená k aktuálnímu pracovnímu adresáři. (Absolutní cestu k pracovnímu adresáři lze získat příkazem pwd.) Speciální jména adresářů: . (tečka) aktuální adresář (nemá žádnou spojitost s pracovním adresářem) .. (dvě tečky) rodičovský adresář C2110 Operační systém UNIX a základy programování - 17 - Přístupová právaPřístupová práva Přístupová práva určují jaké operace může uživatel provádět se soubory či adresáři v souborovém systému. Přístupová práva: r možnost číst soubor vypsat obsah adresáře w možnost měnit soubor změnit obsah adresáře x možnost spuštění souboru možnost vstoupit do adresáře Každý soubor či adresář má určeného vlastníka a skupinu. Přístupová práva se uvádějí zvlášť pro vlastníka souboru, pro skupinu a ostatní uživatele. $ ls -l drwxrwxr-x 3 kulhanek lcc 4096 2008-10-13 09:57 bin/ drwx------ 2 kulhanek lcc 4096 2008-10-13 09:58 Desktop/ -rw-rw-r-- 1 kulhanek lcc 5858 2008-10-17 11:58 distance.cpp jméno souboru či adresáře/ vlastník (user) a skupina (group) velikost čas poslední změny přístupová práva C2110 Operační systém UNIX a základy programování - 18 Přístupové práva se mění příkazy: chmod, chgr, chown Změna přístupových právZměna přístupových práv Přístupová práva: r možnost číst soubor vypsat obsah adresáře w možnost měnit soubor změnit obsah adresáře x možnost spuštění souboru možnost vstoupit do adresáře Skupina práv: u vlastník (user) g skupina (group) o ostatní (other) a všichni (all), právo se aplikuje na u,g,o Ukázka: $ chmod u+x,g-w soubor přístupová práva C2110 Operační systém UNIX a základy programování - 19 - drwxrwxr-x typ: soubor (-) nebo adresář (d) u g o Přídá (+) právo pro spuštění vlastníkovi a Odstraní (-) právo zápisu pro skupinu Speciální souborySpeciální soubory Některé soubory v souborovém systému mají speciální charakter. Jedná se například o přístupové body k hardware počítače (obsah adresáře /dev). Nekteré soubory obsahují informace o aktuálním stavu operačního systému (obsah adresáře /proc) a podobně. Užitečné speciální soubory: /dev/null soubor poskytuje prázdný obsah, veškery obsah do něj zapsaný je okamžitě odstraněn vhodný pro přesměrování nechtěného standarního vstupu či výstupu /proc/cpuinfo informace o dostupných procesorech $ cat /proc/cpuinfo $ ls 2> /dev/null Příklad použití: C2110 Operační systém UNIX a základy programování - 20 Soubory I adresáře jejichž jméno začíná . (tečkou) jsou skryté (používají se k ukládaní konfigurace systému a aplikací. Lze je vylistovat pomocí: ls -a) Diskové oddílyDiskové oddíly C2110 Operační systém UNIX a základy programování - 21 [kulhanek@wolf02 ~]$ df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/server1-root ext3 20G 7.4G 12G 40% / /dev/sda1 ext3 185M 12M 164M 7% /boot /dev/mapper/server1-scratch ext3 30G 1.2G 27G 5% /scratch /dev/mapper/server1-vbox ext3 20G 10G 8.7G 54% /win tmpfs tmpfs 1014M 12K 1014M 1% /dev/shm wolfn.wolf.net:/home/kulhanek nfs 394G 47G 331G 13% /home/kulhanek wolfn.wolf.net:/software/ncbr nfs 15G 13G 2.0G 87% /software/ncbr [kulhanek@wolfn ~]$ df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/server1-root ext3 15G 8.8G 4.8G 65% / /dev/md0 ext3 190M 18M 163M 10% /boot /dev/mapper/server1-home ext3 394G 47G 331G 13% /home /dev/mapper/server1-software ext3 15G 13G 2.0G 87% /software/ncbr tmpfs tmpfs 1005M 12K 1005M 1% /dev/shm zařízení typ souborového systému přípojný bod zařízení ● diskový oddíl ● síťový disk ● atd Příkazy ➢ Manuálové stránky ➢ Přehled příkazů C2110 Operační systém UNIX a základy programování - 22 - Příkazy - nápovědaPříkazy - nápověda Manuálové stránky (aneb co dělat, když si nevím rady): ● man vypíše manuálovou stránku příkazu $ man [section_number] topic Dostupné sekce: ● Section 1 user commands ● Section 2 system calls ● Section 3 library functions ● Section 4 special files ● Section 5 file formats jméno příkazu, funkce, tématu, kapitoly apod. Číslo sekce je nutné udávat u témat se stejným jménem zařazených do různých sekcí. ● Section 6 games ● Section 7 conventions and miscellany ● Section 8 administration and privileged commands ● Section L math library functions ● Section N tcl functions $ man 1 printf $ man 3 printf manuálová stránka příkazu printf manuálová stránka funkce printf() jazyka C C2110 Operační systém UNIX a základy programování - 23 - Příkazy - nápovědaPříkazy - nápověda Navigace v textu nápovědy: ● posun v textu po řádcích (kurzorové šipky nahoru a dolů nebo klávesy j a k) ● posun v textu po stránkách (PgDn a PgUp nebo klávesy f a b) ● vyhledávání ( /hledaný_text , klávesa n pro další vyhledávání ) ● zavření nápovědy (klávesa q) On-line manuálové stránky ve formátu HTML: http://linux.die.net/man/ C2110 Operační systém UNIX a základy programování - 24 - Příkazy - přehledPříkazy - přehled Souborový systém: ● pwd vypíše cestu aktuálního pracovního adresáře ● cd změní aktuální pracovní adresář ● mkdir vytvoří adresář ● rmdir odstraní adresář ● ls vypíše obsah adresáře ● du vypíše velikost adresáře ● cp zkopíruje soubor či adresář ● mv přesune soubor či adresář ● rm odstraní soubor či adresář ● stat vypíše informace o souboru či adresáři ● find nalezne soubor ● df vypíše informace o připojených diskových oddílech ● scp kopíruje soubory mezi počítači C2110 Operační systém UNIX a základy programování - 25 - Příkazy - přehledPříkazy - přehled Procesy: ● top informace o běžících procesech v systému ● ps vypíše informace o běžících procesech v systému ● kill zašle signál procesu ● nohup spustí process bez interakce s terminálem ● time vypíše délku běhu procesu ● wait čeká na dokončení procesů na pozadí ● ssh spustí příkaz na vzdáleném počítači C2110 Operační systém UNIX a základy programování - 26 - Příkazy - přehledPříkazy - přehled Manipulace s textovými soubory: ● cat vypíše obsah souboru ● more vypíše obsah souboru po stránkách ● paste spojí obsah více souborů do jednoho (vedle sebe) ● cut vypíše zvolený sloupec ze souboru ● tr transformace souboru ● wc informace o souboru (počet řádků, slov a znaků) ● grep vypíše řádky ze souboru obsahující klíčové slovo ● head vypíše úvodní část souboru ● tail vypíše koncovou část souboru ● sed neinteraktivní editor ● sort setřídí obsah souboru ● awk interpret jazyka pro manipulaci s textovými soubory C2110 Operační systém UNIX a základy programování - 27 - Příkazy - přehledPříkazy - přehled Zjištovací příkazy: ● uname vypíše informace o systému ● date vypíše aktuální čas a datum ● hostname vypíše jméno počítače ● who vypíše, kdo je přihlášen do systému ● id vypíše identifikační čísla uživatele ● whoami vypíše jméno přihlášeného uživatele Různé: ● echo vypíše text ● printf vypíše formátovaný text ● type vypíše cestu k příkazu ● seq vypíše sekvenci čísel ● read načte text ze standardního vstupu a uloží do proměnné ● dirname vyextrahuje jméno adresáře z úplného jména souboru ● basename vyextrahuje jméno souboru z úplného jména souboru C2110 Operační systém UNIX a základy programování - 28 -