Programozás alapjai II. UNIX alapok
Szeberényi Imre BME IIT
<
[email protected]>
MŰEGYETEM 1782 UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
-1-
Legfontosabb tulajdonságai • • • •
többfelhasználós (multiuser) időosztásos (time sharing) hardware független nyílt rendszer – gyártófüggetlen protokollokon, eljárásokon, és szabványokon alapul. – nem kötődik egyetlen gyártóhoz sem
UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
-2-
Legfontosabb tulajdonságai/2 • szorosan kötődik az Internet technológiákhoz • mikroszámítógéptől mainframe-ig és szuperszámítógépig minden hardware platformra implementálták • sok segédprogram, melyek lehetővé teszik komplex feladatok megoldását is • I/O eszközök egységes kezelése • hierarchikus állományrendszer UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
-3-
A UNIX rövid története • A UNIX nem új, de mindig megújul (közel 50 éves) • Bell Laboratories (1968-1974) Saját célra szoftver fejlesztői környezet. (Denis Richie, Ken Thompson, PDP-7) • V6, V7 (C nyelv); Egyetemek, kutatóintézetek (sok ötlet, felhasználók igényei szerint, inkompatibilitás). UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
-4-
A UNIX rövid története/2 • két fő irányzat: – AT&T SystemV, – BSD
• minden nagy gyártó saját implementációval rendelkezett (SVR4,OSF/1, BSD, Linux) • szabványosítási törekvések (Posix, X/Open portability guide) • legnépszerűbb PC-n futó változatai: Linux, FreeBSD, SCO, Solaris UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
-5-
Bejelentkezés • Felhasználó azonosítás grafikus, vagy alfanumerikus felületen keresztül: – login – password
• Jelszó változtatás: passwd • Kedvelt ssh kliens a putty – fontos a helyes beállítás: • keyboard • char set (translation) UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
-6-
Bejelentkezés/2 • Bejelentkezés után normál esetben a login v. home katalógusban elindul a parancsértelmező (shell). • Ez értelmezi a felhasználói parancsokat és indítja a további processzeket (processz = futó program). • Több shell alakult ki, melyek elsősorban programozói szempontból különböznek. • A parancsértelmező kezelése kényelmetlen, ha nincs rendesen beállítva a környezet. • Nagyon fontos a terminál típusának beállítása ill. összhangja a teminálemulátorral. (set term=, TERM=) UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
-7-
stty • Minden terminálkapcsolat (session) önálló beállításokkal rendelkezik. A legfontosabbak: – üzemmód • raw, cooked, icanon – input karakterek kezelése • echo, echoe, echok, onlcr – output kar. kezelése
– speciális karakterek • erase (^H), kill (^U), intr (^C), quit(^\) • susp (^Z) eof (^D), start (^Q), stop(^S)
UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
-8-
stty/2 A képernyő-orientált programok mindent maguk intéznek (raw mód), míg a sor orientált programok a sor javítását, szerkesztését a terminálkezelőre bízzák (cooked mód).
FONTOS tudni, hogy a bash maga intézi a sor javítását, ezért előfordulhat, hogy a bash-ban megy a ←, de más program használatakor (pl. cat) nem! UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
-9-
stty/3 A ← jelre a terminálemulációk általában ^H-t adnak, de néha ^?-t. A bash mindkettőre visszalép, de a terminálkezelő csak az erase karaktert figyeli. stty –all Beállítás: (célszerű sh-t indítani előtte) stty erase ^H stty erase ^? UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 10 -
A UNIX állományrendszere • Az állományrendszer hierarchikus, fa • Legfontosabb tulajdonságok: – egyetlen gyökér (root) van a rendszerben, a kötetek (adathordozók) számától függetlenül – Fájlok legfontosabb csoportja: • egyszerű (plain) • katalógus (directory) • periféria (device) további csoportok: • socket • named pipe • szimbolikus link UNIX alapok
© BME-IIT Sz.I.
(jele: -) (jele: d) (jele: c vagy b) (jele: s) (jele: p) (jele: l) 2015.02.10.
- 11 -
A UNIX állományrendszere/2 – Katalógusok, perifériák is fájlként látszanak, általában teljesen azonos módon kezelhetők az egyszerű állományokkal (ugyanazok a rendszerhívások: open, close, read, write, stb.) – Állományokat sem tartalmuk, sem nevük alapján nem kell megkülönböztetni (azaz: nincs külön szöveg fájl vagy bináris fájl, nem a fájl neve vagy kiterjesztése határozza meg a fájl funkcióját)
UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 12 -
A UNIX állományrendszere/3 – A fa struktúrában keresztkapcsolatok (link) hozhatók létre. A link két változata: • Hard link • Szimbolikus link
– A fájlok elnevezési szabályai rugalmasak – Az állományrendszer működését beépített cache gyorsítja (buffer cache)
UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 13 -
Védelmi rendszer • Többfelhasználós rendszer, védeni kell: – fájlok adatait – processzek adatait
• A védelem kiterjed: – olvasásra – írásra – végrehajtásra
UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 14 -
Védelmi rendszer/2 • A bejelentkezéskor felhasználó azonosítás történik és meghatározásra kerül az adott felhasználó – UID-ja (felhasználó azonosító) – GID-je (csoport azonosító) (A felhasználók csoportokba oszthatók. Egy felhasználó több csoportba is tartozhat)
• A felhasználó által létrehozott minden processz ezt örökli. UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 15 -
Védelmi rendszer/3 • Minden állománynak van: – tulajdonosa (rendszerint aki létrehozta) – felhasználói csoportja – legalább 3x3-as védelmi kódja
• Ez utóbbi megadja, hogy a – tulajdonos – csoporttárs – bárki más milyen műveletet végezhet az állományon. UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 16 -
Védelmi rendszer/4 • Állományokon végezhető műveletek: – olvasás (r) – írás (w) – végrehajtás/keresés (x)
• Az ls parancs a védelmi kódot betűkkel jeleníti meg pl: -rwxr-xr-- 1 joska
UNIX alapok
© BME-IIT Sz.I.
tanulo
....
2015.02.10.
- 17 -
Védelmi rendszer/5 • Védelmi szempontból a katalógusok nem különböznek a fájloktól. A katalógust egy cédulának kell tekinteni, amire a fájl neve van felírva. Egy fájl védelme nem függ az azt tartalmazó katalógus védelmétől. Pl: drwxrwxrwx 2 joska . . . . munka -r--r--r-UNIX alapok
© BME-IIT Sz.I.
1
joska . . . . levelem 2015.02.10.
- 18 -
Védelmi rendszer/6 • Az előzőek alapján a fájl módosításához nem kell írási jog a befogadó katalógusra. Pl: dr-xr-xr-x 2 joska . . . . munka -rw-rw-rw-
UNIX alapok
© BME-IIT Sz.I.
1
joska . . . . levelem
2015.02.10.
- 19 -
Védelmi rendszer/9 • umask Alapvetően kényelmi szerepe van a védelmi rendszerben. Az állomány létrehozásakor korlátozza (maszkolja) az új fájl védelmi kódját. A 3x3 bites védelmi kódot oktális számként kiolvasva pl. az rw-rw-rwvédelemnek a 666-os oktális szám felel meg. Fájl létrehozásakor az előírt védelmi kódból az umask által megjelölt bitek törlődnek. UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 20 -
umask példa umask 022 (oktális); creat(file, 0666) 0666 0022 0644
Az általános célú programok 0666-tal hozzák létre az állományokat, így az umask fog korlátozni. Ez történik pl. az output átirányításkor is. Pl: ls > proba Ez csupán KÉNYELMI funkció, hiszen a tulajdonos bármikor megváltoztathatja a védelmi kódot. UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 21 -
chmod parancs chmod okt_szám file1 file2 ... chmod oug+-=rwxstougX file ... Pl: chmod 640 uborka chmod -w korte chmod g+w alma chmod oug=rw
UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 22 -
Fájlkezeléssel kapcs. parancsok – – – – – – – – – – UNIX alapok
cd (change dir) pwd (print w. dir.) mkdir (make dir.) rmdir (remove dir.) ls (list) cp (copy) rm (remove) mv (move) ln (link) ln –s © BME-IIT Sz.I.
katalógus váltás munkakatalógus kiírása katalógus létrehozása katalógus törlése katalógus lista fájl(ok) másolása fájl(ok) törlése fájl(ok) áthelyezése fájl hivatkozás készítés szimbolikus hivatkozás készítése 2015.02.10.
- 23 -
Fájlkezeléssel kapcs. parancsok/2 – chmod (ch. mode) védelmi kód változtatás – chown/chgrp tulajdonos megváltoztatás – mount/umount kötet csatlakoztatás
Sok fájkezeléssel kapcsolatos parancs –r (–R) kapcsolóra rekurzív lesz (pl. cp)
UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 24 -
On-line manual man man man man –k man 1 cp, vagy man –s 1 cp GNU: info
UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 25 -
Shell • Parancsértelmező (shell) értelmezi a felhasználói parancsokat. Ez független attól, hogy grafikus, vagy alfanumerikus felületen dolgozunk. • Több shell alakult ki, melyek programozói szempontból és a kényelmi szolgáltatásokban különböznek.
UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 26 -
Shell legfontosabb tulajdonságai • Parancsértelmező és programozási nyelv. • Egyszerűen kialakítható ún. shell szkript vagy parancs fájl, amivel a parancskészlet bővíthető. • Egyszerű szintaxis a standard input-output átirányítására. • Csővezeték segítségével komplex feladatok megoldása a meglevő segédprogramokkal. • Egyénileg konfigurálható, testre szabható.
UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 27 -
Shell-ek beállítása • Több jól definiált ponton speciális parancsállományok futtására van lelhetőség: – – – –
UNIX alapok
login start logout távoli vagy nem interaktív
© BME-IIT Sz.I.
2015.02.10.
- 28 -
Shell-ek beállítása/2 shell sh ksh csh
tcsh
bash
UNIX alapok
login /etc/profile $HOME/.profile /etc/profile $HOME/.profile /etc/csh.cshrc /etc/csh.login ~/.cshrc ~/.login /etc/csh.cshrc /etc/csh.login ~/.tcshrc || ~/.cshrc ~/.login /etc/profile ~/.bash_profile ||~/.bash_login || ~/.profile
© BME-IIT Sz.I.
start
logout
rsh, nem interakt.
/etc/csh.cshrc ~/.cshrc
/etc/csh.logout ~/.logout
/etc/csh.cshrc ~/.cshrc
/etc/csh.cshrc ~/.tcshrc || ~/.cshrc
/etc/csh.logout ~/.logout
/etc/csh.cshrc ~/.cshrc
~/.bashrc
~/.bash_logout
$BASH_ENV ~/.bashrc
2015.02.10.
- 29 -
Parancsok általános felép. parancs kapcsolók argumentumok .....
• Kapcsolók: parancs működését, eredményét módosító paraméterek. Többnyire "–"-szal kezdődnek. (ls –l). • Általános szabály, hogy ha a fájlnév helyén – áll, akkor az a szabványos be/kimenetet jelöli. (pl: cmp – f1).
UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 30 -
Parancs és parancssor • Egy parancssor több parancsot is tartalmazhat. – prog1 ; prog2 – prog1 || prog2 – prog1 && prog2
• Sőt egy parancssor több sorból is állhat. (folytatósor) • Egy parancs is lehet többsoros (pl: for)
UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 31 -
Shell I/O átirányítás • • • •
prog > file prog >> file prog < file prog << VEGE ezt a prog megkapja a standard bemenetén a VEGE végjelig. Ez a „here” dokumentum. VEGE • prog1 | prog2 UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 32 -
Shell állománynév helyettesítés • FONTOS: állománykezelő szinten nincs kiterjesztés, ezért a . (pont) a név része. • prog * - tetszőleges számú bármi • prog ? - 1 db bármi • prog [abc] - a, vagy b, vagy c • prog [a-z] - egy az a-z intervallumból • prog ~/file - home_kat/file • prog ~user_nev/file - user_home_kat/file UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 33 -
Shell állománynév helyettesítés/2 • Nincs korlátozás a helyettesítő karakterek alkalmazására. ls A?[0-9]*z ls ~/**A**
• Ha a programra szeretnénk bízni a kezelést, le kell „takarni”. ls
UNIX alapok
"**A**"
© BME-IIT Sz.I.
2015.02.10.
- 34 -
Shell parancshelyettesítés • Lehetővé teszi, hogy egy program kimenete a másik program indítási paramétere legyen: prog1 `prog2` more `grep -l alma *.txt`
UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 35 -
Speciális jelentés megszüntetése Szinte minden jel speciális: * ? [ ]< > | & $ { } ; ( ) '
' ' t " n ` i t n i UNIX alapok
" n t i
` n i t
\ n i i
$ n i i
" ` \
* n n i
terminális nem értelmeződik speciálisan értelmeződik
© BME-IIT Sz.I.
2015.02.10.
- 36 -
Reguláris kifejezések • Szövegfeldolgozás jellemző feladat a programfejlesztői környezetekben. • A szövegre illeszkedő minta egységes megadására találták ki. • Segítségével bonyolult minták és illesztési szabályok adhatók meg. • Sajnos nem teljesen egységes, mert van egy bővített változata is. UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 37 -
Reguláris kifejezések/2 c önmagát a c karaktert jelenti. \c "c", ha c nem számjegy és nem (, ), {, }. ^ sor elejére illeszt. $ sor végére illeszt. . egy db tetsz. kar. (kivéve újsorjel). [abc] "a", "b", vagy "c" [^abc] bármi ami nem "a", "b", vagy "c"
UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 38 -
Reguláris kifejezések/3 r* r atom nullaszor vagy sokszor ismétlődhet r1r2 r1 és r2 atom egymás után illesztendő úgy, hogy r1 a lehető leghosszabban illeszkedjék. r+ r atom egyszer vagy sokszor ismétlődhet r? r atom 0-szor vagy 1-szer ismétlődhet r1|r2 r1 vagy r2 atom közül csak az egyiknek kell illeszkednie Ez utóbbi 3 csak egrep, awk, lex, perl esetében UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 39 -
Reguláris kifejezések/4 \(r\) r reguláris kifejezésre később hivatkozni lehet a \n alakban, ahol n egy számjegy. \n hivatkozás az n. \(r\) alakú reguláris kif.-re r\{m,n\} r atom minimum m-szer, de maximum n-szer ismétlődhet r\{m\} r atom pontosan m-szer ismétlődhet r\{m,\} r atom legalább m-szer ismétlődhet Ezek csak ed, sed és perl esetében. UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 40 -
Reguláris kifejezés példák • •
•
UNIX alapok
Az alma azt jelenti, hogy az alma minta a soron belül bárhol előfordulhat. A ^alma előírja, hogy az alma mintának a sor elején kell előfordulnia. A ^[mh]?alma azt jelenti, hogy sor elején alma vagy malma vagy halma mintának kell előfordulnia.
© BME-IIT Sz.I.
2015.02.10.
- 41 -
Reguláris kifejezés példák/2 • A ^[^mh]alma azokra a sorokra illeszkedik, amelyen nem malma, vagy halma sorozattal kezdődnek, de ?alma mintával kezdődnek. • A ^\([abc]\)\1 azokra a sorokra illeszkedik, amelyek vagy aa, bb vagy cc kezdetűek. (\1 szerepe itt az, hogy az [abc] szabad paraméterek közül az aktuálisan illeszkedőt kijelölje. UNIX alapok
© BME-IIT Sz.I.
2015.02.10.
- 42 -
Verziókezelő rendszerek • Együtt kezelik különböző verziókat. Nincs szükség változatos nevű állományokra. • Vannak operációs rendszerek, melyek ehhez támogatást adnak, de.... • Segítik a verziók adminisztrálását – – – – – UNIX alapok
SCCS RCS CVS SVN GIT, HG, GITHUB, GITLAB … © BME-IIT Sz.I.
2015.02.10.
- 43 -
Verziókezelő rendszerek/2 Jellemző életciklus: R.L.b.l 1.3.2.2
1.3.2.1
1.1
1.2
1.3
1.3.1.1
Távoli tároló:
UNIX alapok
© BME-IIT Sz.I.
2.1
4.12
1.3.1.2
Lokális másolatok:
2015.02.10.
- 44 -