Operációs rendszerek 2 1. óra: Linux alapok – Ismétlés Windisch Gergely
[email protected] 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
Windisch Gergely - Operációs rendszerek 2
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
Windisch Gergely - Operációs rendszerek 2
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
Windisch Gergely - Operációs rendszerek 2
Parancsok • • • • • • • •
echo "Hallo Welt" echo "Hallo Welt" > ujfajl echo "Hallo Welt megint" >> ujfajl cat ujfajl ls,ls -l cp, mv mkdir rm
Windisch Gergely - Operációs rendszerek 2
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
Windisch Gergely - Operációs rendszerek 2
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
Windisch Gergely - Operációs rendszerek 2
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
Windisch Gergely - Operációs rendszerek 2
Állomány hivatkozások
Soft link
ln -s target ujnev
Hard link
ln target ujnev
Windisch Gergely - Operációs rendszerek 2
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
Windisch Gergely - Operációs rendszerek 2
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 ./*
Windisch Gergely - Operációs rendszerek 2
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
Windisch Gergely - Operációs rendszerek 2
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
Windisch Gergely - Operációs rendszerek 2
Feladatok • Milyen jogosultságot jelentenek a következő számok? – 666 – 555 – 352 – 731
– 201 – 5210
– 1121
Windisch Gergely - Operációs rendszerek 2
Feladatok • Konvertáljuk számokká – rwx--xr-– -w------– ------rwx – -w--w--w-
Windisch Gergely - Operációs rendszerek 2
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
Windisch Gergely - Operációs rendszerek 2
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
Windisch Gergely - Operációs rendszerek 2
Szerkesszünk szöveget - bármi más • • • • •
mcedit joe nano pico emacs
Windisch Gergely - Operációs rendszerek 2
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
Windisch Gergely - Operációs rendszerek 2
Első héjprogramunk #!/bin/bash # Igy irunk kommenteket echo „Igy irunk ki valamit” exit 0
#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
Windisch Gergely - Operációs rendszerek 2
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" Windisch Gergely - Operációs rendszerek 2
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.
Windisch Gergely - Operációs rendszerek 2
Feladat megoldás #!/bin/bash elso="nemtudom" masodik="ezt sem" echo $elso $masodik exit 0
Windisch Gergely - Operációs rendszerek 2
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)
Windisch Gergely - Operációs rendszerek 2
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ó) )
Windisch Gergely - Operációs rendszerek 2
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)
Windisch Gergely - Operációs rendszerek 2
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
Windisch Gergely - Operációs rendszerek 2
Feladat megoldás ls -l > `date +%F_%H-%M`.txt
vagy
ls -l > "`date`"
Windisch Gergely - Operációs rendszerek 2