Petr Kulhánek, Zora Střelcová a Jakub Štěpán 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 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. Srovnání s MS Windows: jednotlivé diskové oddíly (C:, D: apod.) jsou připojeny jako podadresáře CD-ROM a jiné zařízení (USB disky) se opět připojují jako podadresáře 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 - 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í - 15 - 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í - 16 - 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 a skupina velikost čas poslední změny přístupová práva C2110 Operační systém UNIX a základy programování - 17 Přístupové práva se mění příkazy: chmod, chgr, chown 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í - 18 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í - 19 [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í - 20 - 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í - 21 - 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í - 22 - 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 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í - 23 - 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í - 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 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 scp kopíruje soubory mezi počítači C2110 Operační systém UNIX a základy programování - 26 -