Operációs rendszerek 2 1. óra: Linux alapok Ismétlés Windisch Gergely windisch.gergely@nik.uni-obuda.hu 2011-2012 2. félév
Féléves követelmények Kéthetente 2 óra, hetek paritása alapján egy elmaradó alkalom (tavaszi szünet végett) 1 nagy zh, minden órán kis zh Aláírás megszerzésének követelménye a kiszh-kon és a nagyzh-n megszerzett legalább elégséges érdemjegy Letölthető tudományok: http://nik.bmf.hu/gwindisch/or2_2012
Linux alapjai - ismétlés Operációs rendszerek 1 anyagok - érdemes átnézni! Unixból fejlődött ki Alapvetően ingyenes Különféle disztribúciók léteznek www.ubuntu.com, www.slackware.org Kipróbálható live CD-s változat www.knoppix.org többfelhasználós rendszer root a helyi főnök
Alapok A fájlnév tetszőleges hosszúságú lehet Case sensitive Kiterjesztés nincs Könyvtárak közötti elválasztó a / Joker karakterek: * és? (reguláris kifejezések később várhatóak) Escape karakter: \ Rejtett fájl: olyan file, aminek a neve.-tal kezdődik
Parancsok echo "Hallo Welt" echo "Hallo Welt" > ujfajl echo "Hallo Welt megint" >> ujfajl cat ujfajl ls,ls -l cp, mv mkdir rm
Feladatok parancsokhoz Hozzon létre 3 könyvtárat Hozzon benne létre 2 fájlt. Az egyik tartalma legyen az aktuális dátum, a másik a jelenlegi könyvtár tartalma Másolja át a /bin/cat fájlt az aktuális könyvtárba macska néven
Könyvtárszerkezet Aktuális könyvtár:. Szülőkönyvtár:.. Aktuális könyvtár lekérése: pwd Felhasználó saját könyvtára: ~ Elérési út: $PATH
Könyvtárszerkezet Hierarchia: /: gyökérkönyvtár /bin: futtatható állományok /sbin: rendszergazda által futtatandó állományok /etc: konfigurációs állományok /home: felhasználók saját könyvtárai /var: változó állományok (pl. log, temp stb.) /proc: rendszerállapot (dinamikus fájlok) /root: a rendszergazda saját könyvtára
Állomány hivatkozások Soft link ln -s target ujnev Hard link ln target ujnev
Több parancs futtatása egymás után ; : parancs1 ; parancs2 parancs1 és parancs2 futtatása &&: parancs1 && parancs2 parancs2 futtatása, ha parancs1 sikeres ls l / && echo siker ls l /homme && echo siker : parancs1 parancs2 parancs2 futtatása, ha parancs1 sikertelen ls l / echo nemnyert ls l /homme echo nemnyert : csővezeték az első parancs kimenet a második bemenete lesz ls -l /etc more
Kondicionált futtatás && és túlzott használata igen nehezen olvashatóvá teszi a scripteket - nem biztos, hogy érdemes Bizonyos esetekben ajánlott - biztonságossá tehet parancsokat egy scriptben pl: cd /home/hallgato/konyvtar rm./* Belép a könyvtárba, majd kitörli a tartalmát Mi történik, ha nem létezik a könyvtár? cd /home/hallgato/konyvtar && rm./*
Jogosultságok chmod Tulajdonos/Csoport/Mindenki más olvasás: 4 írás: 2 futtatás: 1 Mindenkinek minden jog: chmod 777 file Könyvtárnál: listázás, új fájl létrehozás/törlés, belépés belépés tiltása szigorúbb, mint a listázásé Szöveges reprezentáció: (-)rwxrwxrwx chmod arelatív beállítása chmod aoug+-=rwx filenev
Kiterjesztett jogok sticky bit (1) könyvtárakra beállítva csak a tulajdonos törölheti az alfájlokat chmod +t file SUID (2) futtatható fájloknál a fájl tulajdonosának jogosultságait örököljük chmod +s file SGID (4) futtatható fájloknál a fájl tulajdonos-csoportjának jogait örököljük További információ http://www.ibm.com/developerworks/aix/library/auspeakingunix4/index.html
Feladatok Milyen jogosultságot jelentenek a következő számok? 666 555 352 731 201 5210 1121
Feladatok Konvertáljuk számokká rwx--xr-- -w------- ------rwx -w--w--w-
Szerkesszünk szöveget - vi(m) vim fájlnév ne a sima vi induljon 2 mód: szerkesztő, parancs - esc, i (insert) kilépés: esc, :q, :wq, :q! mentés: :w jelenlegi sor törlése: dd (6dd: delete 6 lines) jelenlegi sor másolása: yy (6yy: copy 6 lines) puffer tartalmának beillesztése: p
Szerkesszünk szöveget - vi(m) felhasználóbarát, csak megválogatja a barátait érdemes ismerni, mert minden unix rendszeren megtalálható vi az eredeti, vim-et használunk (VI improved) vim filename vi: http://www.eng.hawaii.edu/tutor/vi.html vim: http://www.vi-improved.org/tutorial.php
Szerkesszünk szöveget - bármi más mcedit joe nano pico emacs
Shell scriptek alapjai (új anyag) Sok parancs egy fájlban #!/bin/bash shebang - meg kell adnunk a "fordítót" chmod a+x filenev ha nem adunk futtatási jogot, akkor nem tudjuk futtatni./filenev./ nélkül a rendszer nem találja meg (aktuális könyvtár nem része a PATH változónak) Jó, mert a sok unix programot egymás után kötve szép eredmények érhetőek el
#!/bin/bash # Igy irunk kommenteket echo Igy irunk ki valamit exit 0 Első héjprogramunk #exit 0 nem kötelező, de így adunk visszatérési értéket #exit 1: valami hiba volt #parancs1 parancs2 is innen tudja, ha hiba van
Változók használata szam=43 masikvaltozo="egyszo" megintmasik="tobb szo is lehet" = köré spacet tenni tilos! string változó értékét " "-közé kell írni (space esetén) hivatkozás a változóra: $ echo $masikvaltozo Gyakorlatias tanács ZH-n automatikus bukás jár a következő formákért $valtozo=11 vatlozo = 11 echo "A beadott ertek: valtozo"
Feladat Készítsünk programot, amiben két változónak adunk értéket, majd kiírjuk először az egyiket, utána a másikat.
#!/bin/bash elso="nemtudom" masodik="ezt sem" Feladat megoldás echo $elso $masodik exit 0
Beépített változók $?: előző parancs kimeneti eredménye (exit status) ls -l $? - eredménye 0, ha sikeres volt $# : parancssori paraméterek száma $1..9: az n. paraméter értéke 9 fölötti darabszám esetén a shift parancsot kell használni $0 : az adott héjprogram neve $* : összes paraméter egyben $@: összes paraméter egyben, másképp $"@" a legjobb forma: más esetben a bejövő paraméter szavanként elválasztásra kerül (for ciklusnál fontos)
Idézőjelek, parancsbehelyettesítés ' ' : belső szöveg stringként echo '$elso' " " : string, változó behelyettesítéssel echo "$elso" ` ` : parancsbehelyettesítés (alt gr+7) aktualis_datum=`date` Értékadáskor nem futna len a date parancs egyébként (alternatíva: aktualis_datum= date szóközt teszünk az = után, akkor is lefut a date parancs A kettőt ne keverjük! (`` és szóköz nem jó) )
Feadat Készítsen héjprogramot, ami kilistázza az aktuális könyvtár tartalmát, a listát pedig elmenti egy olyan fájlba, aminek a neve az aktuális dátum. (év-honapnap_ora-perc formátumban)
Megoldási javaslat dátum formázásra vonatkozó tudomány: man date ambigous redirect: a shell csak egyetlen fájl nevét várja a > után, ámde tőlünk többet kapott, ezért a hibaüzenet
Feladat megoldás ls -l > `date +%F_%H-%M`.txt vagy ls -l > "`date`"