OPERÁCIÓS RENDSZEREK. Az OS kernel felületei. A rendszerhívások. Felületek a kernelhez: a burok és az API

Hasonló dokumentumok
Számítógép architektúrák. A mai témáink. A Unix. A burok

Számítógép Architektúrák. 4. Gyakorlat

Szkriptnyelvek. 1. UNIX shell

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

S z á m í t ó g é p e s a l a p i s m e r e t e k

Számítógépek, számítógéprendszerek. Wagner György Általános Informatikai Tanszék

chmod umask chown, chgrp

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

1. Alapok. #!/bin/bash

Számítógép architektúrák. Felhasználói felületek

Operációs Rendszerek II. labor. 2. alkalom

Számítógépek, számítógép rendszerek

BASH SCRIPT SHELL JEGYZETEK

Számítógép architektúrák. Felhasználói felületek, kezelők. Szokásos két osztályuk. Felhasználói felületek

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek gyak.

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

További vezérlő valamint számításokat megkönnyítő szerkezetek

BASH script programozás II. Vezérlési szerkezetek

Munka állományokkal. mv: áthelyezés (átnevezés) rm: törlés. rmdir: üres könyvtár törlése. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED


Operációs rendszerek 1.

AWK programozás, minták, vezérlési szerkezetek

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Példa: Aktuális könyvtár tartalmának fájlba mentése, melynek neve az aktuális dátum és idő: ls l > `date+%f_%h-%m`.txt

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

További vezérlő valamint számításokat megkönnyítő szerkezetek

AWK programozás, minták, vezérlési szerkezetek

Linux alapok. Parancsok általános alakja parancs kapcsolók paraméterek

Bevezetés az informatikába, második gyakorlat. Bevezetés Környezetváltozók és néhány egyszerű utasítás Jogosultságok Fájlkezelés

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

BEKÉRT ADAT KÉPERNYŐRE ÍRÁSA KÖRNYEZETI VÁLTOZÓK FÁJL REDEZETT KIÍRÁSA KÖNYVTÁRBAN BEJEGYZÉSEK SZÁMA FÁJLBAN SZÁM NÖVELÉSE. #!

6. BASH programozás I.

A héj vezérlő szerkezetei I.

Operációs rendszerek gyak.

S z á m í t ó g é p e s a l a p i s m e r e t e k

AWK programozás Bevezetés

Bevezetés jogosultságkezelés, csővezeték, átirányítások. BASH script programozás

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Operációs rendszerek 1.

Operációs rendszerek MINB240/PMTRTNB230H

Operációs rendszerek. 3. gyakorlat. Jogosultságkezelés, linkelés, csővezeték UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Munka állományokkal. mv: áthelyezés (átnevezés) rmdir: üres könyvtár törlése rm: törlés. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

Rendszerprogramozás Linux környezetben

Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed. Windisch Gergely windisch.gergely@nik.uni-obuda.hu

7. Laboratóriumi gyakorlat, 1. rész : Vezérlési szerkezetek II.

Webprogramozás szakkör

Operációs rendszerek. A mai program. Jó dolog a test parancs! Segédprogramok, szűrők

Flex tutorial. Dévai Gergely

Occam 1. Készítette: Szabó Éva

A sed folyamszerkesztő

Bevezetés jogosultságkezelés, csővezeték, átirányítások. BASH script programozás

Operációs rendszerek 2 1. óra: Linux alapok Ismétlés. Windisch Gergely félév

Szkriptnyelvek II. Perl programok

Operációs Rendszerek. Windows Parancssor

Szkriptelési feladat megoldása

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

Operációs rendszerek I. IIII. gyakorlat

Programozás alapjai óra. Morvai Flórián, 2010 Dr. Dévényi Károly előadásvázlata alapján

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

A shell vezérlő szerkezetei I.

Page 2. File vizsgálatok (test argumentumai) Logikai értelmű vizsgálatok. Feltételes végrehajtás. test argumentumainak logikai kombinációja

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Unix-Linux alapok II. gyakorlatvezető: Lutár Patrícia

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

OPERÁCIÓS RENDSZEREK II GYAKORLAT

Oktatási segédlet 2014

Legfontosabb tulajdonságai. UNIX rendszer felhasználói és fejlesztői felülete (1-4. ea.) Unix hagymahéj struktúrája. Legfontosabb tulajdonságai

A C programozási nyelv VI. Parancssori argumentumok File kezelés

Delphi programozás I.

A perzisztens adatkezelő rendszer tesztelése és demonstrálása a GRID környezetben

Operációs Rendszerek példatár. Utolsó frissítés: február 10.

C programozási nyelv

Operációs Rendszerek II. labor alkalom

Számítógépes alapismeretek

Gyors tippek linuxra

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

Tájékoztató. Használható segédeszköz: -

Algoritmizálás és adatmodellezés tanítása 1. előadás

A C# programozási nyelv alapjai

Operációs rendszerek. Bemutatkozás

Munka állományokkal, könyvtárakkal I.

S z á m í t ó g é p e s a l a p i s m e r e t e k

A C programozási nyelv I. Bevezetés

Programozási nyelvek JAVA EA+GY 1. gyakolat

Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.

Operációs rendszerek. Folyamatok kezelése a UNIX-ban

Pénzügyi algoritmusok

LINUX PMB LINUXOS PARANCSOK ÉS HASZNÁLATUK - GRUB

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Python bevezető foglalkozás Python bevezető foglalkozás

Szűrők Reguláris kifejezések, AWK

Powershell 1. gyakorlat

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Java II. I A Java programozási nyelv alapelemei

Átírás:

OPERÁCIÓS RENDSZEREK Felületek a kernelhez: a burok és az API Az OS kernel felületei A programozók felülete: Alkalmazásokból és rendszer processzekből rendszerhívások (system call) és eseménykezelők: alkalmazás-programozási felület (Application Programming Interface, API) Hardverből: megszakítás, hiba A felhasználók felülete: Parancsnyelvi vagy grafikus kezelő felület (burok, GUI) Segédprogramok készlete (Ezen processzek programjaiban API hívások vannak. Valójában azok az igazi felületek a kernelhez.) Vadász 2 A rendszerhívások System call: a programozónak ez futásideji könyvtár (Run Time Library, RTL) rutin hívás tűnik Rövid (a tényleges szolgáltató instrukció folyam nem itt van). Csonk: stub. Benne egy kis swapper (kicsomagoló) rész (az argumentumok kezeléséhez), továbbá ellenőrzött módváltó instrukciófolyam, továbbá call jellegű belépés a kernel diszpécserébe. Visszatérési része is van. A különböző nyelvi fejlesztőkhöz kellenek a különböző RTL-ek. Vadász 3 1

Szabványos API felületek A forrás szinten való átvihetőséget (portabilitás) biztosítják Az SVID és/vagy BSD klasszikus API A (korábbi Spec-1170) Unix-98 specifikációnak megfelelő API (SVID, BSD és POSIX szabványú rendszerhívások) Ugyanabban a programban ne keverjük Vadász 4 A rendszerhívások szintaxisa RTL rutinoknak látszanak Információ átadás a paraméterekkel és a visszatérési értékkel is (veremtár, regiszter) Pl count=read(file_d, buffer, nbytes); Módváltással járnak (trap) Vannak rendszerhívás osztályok (ez is struikturálhat) Vadász 5 Rendszerhívás osztályok Processz menedzsment create, terminate process load, execute end, abort get, set process attributes wait for time, sleep wait for event, signal event send & receive messages allocate free memories Informálódó, beállító get, set time, date etc. Fájlok, jegyzékek create, delete files open, close files read, write, reposition get, set file attributes Eszköz manipulációk request, release devices read, write, reposition get, set device attributes logically attach, detach devices Vadász 6 2

A rendszerhívás osztályokhoz A nevek nem valódi hívás nevek, csak jelzések: ilyen hívások kellenek A későbbiekben az egyes OS részrendszerekhez konkrét hívásokat veszünk majd Pl. egyes a processz kontroll hívásokat, IPC hívásokat Vadász 7 A kezelő felületek Ismételjük át és bővítsük az sh/bash burokról a tudnivalókat! Veszünk néhány segédprogramot (szűrőket), a félév végén rendszermenedzseri segédprogramokat Vadász 8 A burok (sh) kifejezés kettős értelme A burok egyrészt parancsértelmező processz, másrészt egy programnyelv. Mint processz: a /bin/sh betölthető, futtatható program egy futási példánya Mint programnyelv: egy szövegfájl, ami parancsokat (esetleg beleértett input sorokat) tartalmaz, és odaadható a burok processznek, hogy futtassa Vadász 9 3

A burok processz Önálló entitás, azonosítója a pid (process identification number) A /bin/sh (vagy /bin/bash) program fut benne Van 3 nyitott adatfolyama A 0 leírójú stdin (szabványos bemenet), ahonnan a parancsokat, csöveket, parancslistákat olvassa. Az 1 leírójú stdout (szabványos kimenet), ahová az eredményeit írja. A 2 leírójú stderr (szabványos hibakimenet), ahová a hibaüzeneteit írja. A nyitott adatfolyamok szokásos módon eszközökhöz vannak kapcsolva Vadász 10 A burok processz működése Az stdout csatornájára kiírja a készenlét jelet (prompt), jelezve, hogy parancsot, csövet, parancslistát vár Az stdin csatornáján parancsot, csövet, parancslistát olvas be, Azt elemzi, értelmezi, átalakítja, majd végrehajtja, vagy végrehajtatja. A végrehajtás eredményét az stdout, ill. stderr csatornára írja, végül visszatérési értéket produkál. Vadász 11 A visszatérési érték Lehet normális (0), lehet nem normális (nem 0), ennek oka többféle valami hiba van, nincs hiba, de szemantikailag van gond. (Pl. grep szűrő nem talál minta-egyezést, vagy test parancs tesztelése nem igaz.) A visszatérési értéket a programvezérlésben használhatjuk majd. Vadász 12 Parancs, cső, lista 4

A parancs fogalma Fehér karakterekkel határolt szavak sora, ahol az első szó a parancs neve, többi szó az argumentumok. Az sh beolvassa, értelmezi, átalakítja, végrehajtja saját maga (belső p.), végrehajtatja gyermek processzben (külső p.) A belső parancsokhoz tartozó szolgáltatások kódját beprogramozták a /bin/sh programba. Vadász 13 Parancs, cső, lista A csővezeték fogalma A csővezeték (pipe) parancsok sora operátorral összekötve: parancsbal parancsjobb Szemantikája: végrehajtódik a parancsbal, szabványos kimenete egy csatornába íródik, majd végrehajtódik a parancsjobb, aminek szabványos bemenete erre a csatornára képződik. A cső visszatérési értéke: a parancsjobb visszatérési értéke. A parancs degenerált cső. Példa: > ypcat passwd grep kovacs Vadász 14 Parancs, cső, lista A parancslista Csővezetékek sora listaoperátorral összekötve: csőbal op csőjobb Listaoperátorok: && # magasabb precedencia, de alacsonyabb mint a & ; \n # alacsonyabb precedencia A szemantika: ; \n soros végrehajtása a csöveknek & aszinkron végrehajtás (csőbal háttérben) && folytatja a listát, ha csőbal normális visszatérésű folytatja a listát, ha a csőbal nem normál visszatérésű Vadász 15 Parancs, cső, lista 5

Parancslisták A lista visszatérési értéke az utolsó cső visszatérési értéke. Háttérben futó cső visszatérési értéke különlegesen kezelhető. A cső degenerált lista (ahol ezentúl listát írunk, írhatunk csövet, sőt parancsot is!) A && és operátoros listáknál először láthatjuk a visszatérési érték értelmét! Valóban a vezérlés menetét befolyásoljuk! Vadász 16 Parancs, cső, lista A cső, parancslista zárójelezés A zárójelezés (csoportosítás) oka kettős: operátorok precedenciáját akarjuk átértékelni, processz szeparálást akarunk elérni. Szintaxis ( lista ) { lista } Szemantika ( ) zárójelezéssel a lista mindenképp szeparált processzben fut. Precedencia átértékelés is lehet. { } zárójelezéssel nem fut feltétlenül szeparált processzben. FIGYELEM! A zárójelek itt szavak! Nem metakarakterek! Vadász 17 Parancs, cső, lista Parancsvégrehajtás Általában az sh készít új processzt a parancs számára, ebbe betölti a parancsot, átadja az argumentumokat neki (szkriptek, exe-ék; PATH szerinti kereséssel). Ha nincs ( ) zárójelezés, sem átirányítás, nem készül új processz a belső parancsoknak (melyek ezek?), vezérlő parancsoknak, sh makróknak (definiált függvények). Ha belső parancs bármilyen okból szeparált processzben fut, abba az sh töltődik! Vadász 18 Parancs, cső, lista 6

Az adatfolyamok átirányítása Mielőtt a lista/parancs végrehajtódik, az sh nézi, vane átirányító operátor > >> < a szavakban (szavak előtt). (A << különleges!) Ha ilyeneket talál, szeparált processz(eke)t készít, azokban az adatfolyamokat fájlokba(ból) képzik le, majd abban hajtják végre a listát/parancsot. (Csőnél is szeparált processz!) A szeparált processz(ek)nek átadja a maradék argumentumokat. Vadász 19 Az átirányító operátorok < file # file legyen az stdin > file # file legyen az stdout, rewrite >> file # file legyen az stdout, append <<[-]eddig # here document, beágyazott input Példa: > mypr < innen > ide elso masodik 0 1 2 > exec >outfile 2>errorfile # szkriptben Vadász 20 Fájlnév kifejtés (behelyettesítés) Argumentumokban használt metakaraktereket (közöttük a dzsókereket: *? [ ]) a burok a lista/parancs végrehajtása előtt különlegesen kezeli. Ha a szavakban dzsókereket talál, azt a szót mintának (pattern) veszi. A minta behelyettesítődik alfabetikus sorrendű fájlnevek listájává, olyan nevekre, melyek a fájlnév-térben illeszkednek a mintára. Csak ezután hajtódik végre a parancs/lista. Vadász 21 7

Az illeszkedés Szokásos karakter önmagára illeszkedik A? egyetlen, bármely karakterre illeszkedik. A * tetszőleges számú, tetszőleges karakterre illeszkedik. A [...] illeszkedik egyetlen, valamelyik bezárt karakterre. A [!...] illeszkedik egyetlen, bármely, kivéve a! utáni karakterre. stb., nézz utána! Vadász 22 A metakarakterek semlegesítése Ezeket az sh kifejti, ezek miatt a parancsot átalakítja. Ha mégis szükségünk van ezekre a parancshoz, (pl. szűrőnek kellenek) semlegesítsük (quotázzuk) őket! Egyetlen karakter semlegesítése: \kar Több karakter semlegesítése: karaktersor # minden bezárt semlegesített. karaktersor # a paraméter és parancsbehelyettesítésen kívül (lásd később) minden semlegesített. Vadász 23 Parancsbehelyettesítés A processzek szokásosan a szabványos kimenetükre írnak. A burok processz is A ` ` (grave accent) közé zárt parancs lefut és kimenete kifejtődik! Példa: $ valt=`wc -l < myfile.txt` # a valt felveszi # a sorok számát $ test `wc -l < myfile.txt` -gt 3 && cat myfile.txt # ha több mint 3 sorból áll, írja ki Vadász 24 8

Egy kis összefoglalás az átalakításokról A burok processz a parancslistát beolvassa, elemzi és átalakítja majd végrehajtja, végrehajtatja Milyen átalakításokat vettünk? Szabványos adatfolyamok leképzésének megváltoztatását (cső, fájlba, fájlból átirányítások, parancs behelyettesítés) Szükség esetén processz szeparálásokat (processzt kreál, abba célszerű programot tölt be, akár a szabványos adatfolyamok leképzésének változtatása miatt, akár zárójelezés miatt). Fájlnév behelyettesítéseket. Lesz még változóbehelyettesítés átalakítás is Vadász 25 A burok, mint programnyelv A burokprogram (shell script) szövegszerkesztővel készült ASCII fájl, parancsokat (csöveket, parancslistákat) tartalmaz soraiban, esetleg beágyazott input sorokat. A burokprogram odaadható a burok-értelmezőnek, hogy dolgozza fel (hogy futassa.) Vadász 26 Burok program futtatás Fájlokhoz való hozzáférési kategóriák: r w x A burok programokhoz az r (olvasni) hozzáférés elengedhetetlen Az x (futtatni) hozzáférés ajánlott chmod +x burokprogram # futtathatóvá tétel parancsa Csak olvasható burokprogramnak nem lehet argumentumot adni, de az alábbiak szerint futtahatjuk: $ sh < burokprogram $ sh burokprogram $. Burokprogram # ún. sourcing: ua. processzben Vadász 27 9

Burok program futtatás burokprogram arg1 arg2 Azaz, a burok programot tartalmazó fájl neve a parancs neve ( PATH változó szerinti keresés van itt is). Mi is történik? (ismétlés) A promptot adó processz beolvassa a sort, elemzi. Megállapítja, ez külső parancs, burokprogram. Kreál processz, amibe a /bin/sh-t tölt, és aminek stdin csatornája a burokprogram szövegfájl. A gyermek processznek a maradék argumentumokat átadja. A promptot adó processz megvárja, míg gyermeke lefut. A gyermek processz a fájlt olvassa és végrehajtja. Vadász 28 A burok program Mint programnak vannak adatszerkezetei, és vannak vezérlési szerkezetei. Természetesen kommentározható. A kommentározás # után a sor maradéka kommentár A burokprogram első sora mint kommentár különleges! Lásd később! Tanszékünk kódolási szabályzata előírja a kommentározást! Vadász 29 A burok adatszerkezetei Az adatok típusa: füzér (szöveglánc, string) Csak numerikus karakterekből álló füzér (néha) numerikus adatként viselkedhet: numerikus operációk hajthatók végre rajtuk Az adatok lehetnek: Változók: ekkor van nevük, van pillanatnyi (ún. definiált) értékük; Állandók (konstansok). A konstansok ún. lexikális konstansok: a szövegkörnyezetből kiderül az értékük. Terminológiai rendetlenség : változó paraméter elnevezés is szokásos Vadász 30 10

Az adatszerkezetekhez megjegyzések Egyes burkok tömbváltozókat is képesek kezelni (csh, tcsh, bash) Ezen belül asszociatív tömböket (bash). Vö. awk. Egyes burkok numerikus típusú változókat is kezelnek (csh, tcsh) Vadász 31 A változók csoportosítása A burok által definiált változók: nevüket nem mi választjuk meg. Lehetnek: pozicionális változók (paraméterek), egyéb a shell által definiált (speciális) változók. A felhasználók által definiált változók (nevüket kiválaszthatjuk): a rendszergazda által definiáltak: konvencionális nevek! Az egyes felhasználók által definiáltak: legyenek itt is konvencióink! Vadász 32 A pozicionális paraméterek Nevük: 0 1 2 3 4 5 6 7 8 9 Pillanatnyi értékük: az aktuális argumentumok (a szavak) Emlékezz: a 0. szó a parancs neve: a 0 nevű változó pill. értéke, az 1. szó az 1. argumentum: az 1 változóban van. Annyi változó definiált, ahány szó van! Ha 9-nél több argumentum van: a shift paranccsal eltolhatók, így kezelhetők! Vadász 33 11

Néhány, a shell által definiált változó Neve #? $! - * 0 Értéke A pozícionális paraméterek száma Az utolsó parancs visszatérési értéke A burok processz pid-je Az utolsó háttérben futó proc. pid-je A burok opciók A pozícionális paraméterek szólistája A parancs neve Kifejtése $# $? $$ $! $- $* $0 Vadász 34 Néhány, a rendszer által szokásosan definiált, exportált változó Neve HOME MAIL PATH USER IFS TERM Értéke A bejelentkezési jegyzék A levelezési fájlunk Parancsok keresési ösvénylistája A felhasználó neve A burok opciók A terminál típusa Kifejtése $HOME $MAIL $PATH $USER $IFS $TERM PS1 Az elsődleges prompt $PS1 Vadász 35 Változódefiniálás Szintaxis $ valtozo=fuzerkifejezes [valtozo=fuzerkifejezes] Példa: $ tmpfile=/tmp/valami $ ures= # az ures definiált, de üres füzér Vigyázz! A következő nem jó! Miért? $ valtozo = fuzerkonstans (Mert ez már 3 szó! Tilos a fehér karakter az = előtt és után!) Vadász 36 12

Hivatkozás változókra: kifejtésük Itt: valt változónév, szo szövegkifejezés, parancs. Ha a : (colon) hiányzik, a 0 string-hosszúság nem ellenőrződik! ${valt:-szo} ${valt:=szo} ${valt:?szo} ${valt:+szo} Ha a valt definiált és nem 0 sztring, akkor kifejtődik. Különben a szo fejtődik ki. Ha a valt nem definiált vagy 0 sztring, akkor felveszi a szo-t. Ezután a valt kifejtődik. Ha a valt definiált és nem 0 sztring, akkor kifejtődik. Különben kiíródik a szo default sztr. Ha a valt definiált és nem 0 sztring, akkor kifejtődik a szo. Különben semmi sem fejtődik ki. Vadász 37 A változók érvényességéhez: a processzek környezete Minden processznek - így a buroknak is - van környezete (environment) A környezet: vált=szöveglánc sorokból álló tábla Gyermek processz a környezetet örökli a szülőtől Mikor az sh processz indul, végigolvassa a környezetét és definiálja a benne található változókat További definíciók is lehetnek az sh életében, átdefiniálások is lehetnek. Ezek nem kerülnek a környezetbe (nem örökölhetők) Vadász 38 Exportálás: többszintes öröklődés Exportálással változót a környezetbe teszünk (ezzel lefelé öröklődővé tesszük) > export változónév-lista Pl. a rendszergazda valahol leírta : $ export MAIL HOME PATH... Exportálással csak leszármazottak örökölhetnek (fölfelé nem) Nem exportált változó nem látható a leszármazott processzekben, de visszatérve abba a burokba, amiben definiáltuk újra láthatóvá válik Vadász 39 13

Egyszintes öröklődés Egyszintes környezetbe tétel $ valt=kifejezés parancs # ugyanabban a sorban ha a parancs külső: látni fogja ha belső: nem látja $ valt=kifejezés; parancs # ugyanabban a sorban ha a parancs külső: nem látja ha belső: látja. (Új, pontosabb definíció az egyszerű parancsra: opcionális számú változódefiníció, amit szavak listája és opcionális átirányítási előírás követ. ) Vadász 40 Vezérlési szerkezetek Szekvenciális programszerkezetek Elágazások Hurkok A szekvenciális szerkezetek A parancslisták Vadász 41 Az if elágazás if plista1 then plista2 [elif plista3 then plista4] [else plista5] fi A plista1 és plista3 predikátumok: igazak, ha normális visszatérési értékül van. Figyelj a kulcsszavakra: if, then, elif, else, fi Érdekes a fi lezáró. A [ ] nem része szintaxisnak: jelzi, elmaradhat a bezárt rész. Vadász 42 14

A case elágazás case szo in minta1 ) lista1 ;; minta2 ) lista2 ;;... esac Pl. -x -y -[xy] ugyanaz Kifejtődik a szo és összevetődik a mintákkal (az írt sorrendben). Ha egyezés van, végrehajtódik a mintához tartozó lista és vége! A minták (hasonlítanak a fájlnév behelyettesítési mintákhoz): * ) akármi, default. p1 p2 alternatíva [p1p2] alternatíva Érdekes kulcsszavak: case, in, esac, figyeld a ) -t, a ;; -t Vadász 43 A for ciklus for valt [in szolista] do plista done Pl. for i in egy ket harom do echo $i done A valt rendre felveszi a szolista elemeit és minden értékével végrehajtódik a plista (a ciklus teste). Vedd észre a kulcsszavakat: for, in, do, done Elmaradó in szolista ugyanaz, mint in $* (az aktuális paraméterlista a szólista) Vadász 44 Egy kérdés Mi a különbség? for valt in $*... for valt... for valt in *... Vadász 45 15

A while ciklus while plista1 do plista2 done until plista1 do plista2 done Végrehajtódik plista1, és ha normális visszatérésű, a plista2, majd újra a plista1, s.í.t. Némely shellben until ciklus is van. Új kulcsszavak! Most már érthetjük a parancs visszatérési érték értelmét! Vadász 46 OPERÁCIÓS RENDSZEREK Felületek a kernelhez: a burok és az API Vége 16