Operációs rendszerek 1. Szűrőprogramok Balla Tibor balla.tibor@inf.unideb.hu
Standard bemenet és kimenet Standard bemenet (stdin,0) Standard kimenet (stdout,1) Standard hibakimenet (stderr,2)
Átirányítás Tetszőleges programot utasíthatunk, hogy a program a bemenetét ne a billentyűzetről várja, és a futás eredményeit ne képernyőre írja. Minden standard outputra író program kimenete átirányítható egy állományba. parancs > állomány_név (létrejön az állomány, ha már létezett akkor felülírja azt) parancs >> állomány_név (létrejön az állomány, ha már létezett akkor hozzáfűz az állomány végéhez) parancs >& állomány_név (az stderr átirányítása az adott állományba) parancs >! állomány_név (a noclobber shell változó beállításától függetlenül is végrehajtódik) Bármelyik program, mely a standard inputról várja a bemenetét tetszőleges állományból olvashat. parancs < állomány_név
Átirányítás (példák) ls > proba cat < proba ls l >> proba cat < proba ls > proba cat < proba cp blalba > cpki cat < cpki cp blabla >& cpki cat < cpki
Szűrő programok (filters) Olyan programok, melyek a beviteli adatokat alapértelmezetten a standard inputról olvassák, és a futásuk eredményét a standard outputra írják. Standard input Standard output
Csővezetékek (Pipes) Az egyik program kimenete szolgál a másik program bemeneteként. - kimenet átirányítása & - a kimenet és a hibacsatorna átirányítása Példa: ls sort r > lista who sort -r Input Output
Csővezetékek elágaztatása : tee Egy szűrő program, mely a bementét a standard inputról veszi, de a kimenetét két helyre küldi változtatások nélkül: Standard output A paraméterként megadott állományba -a opció
Zárójelek ; parancsok összefűzése. A parancsok a leírás sorrendjében végrehajtódnak, de nem támaszkodnak egymásra. date ; who a precedenciája nagyobb, mint a ;-é date ; who wc c Ebben az esetben csak who kimenetének karaktereit számolja meg. (date ; who ) wc c Ebben az esetben mindkét mind a két parancs kimenetének karakterszámát kapjuk vissza
cat concatenate Képes több fájl tartalmát összefűzni, egyetlen kimeneti adatfolyammá alakítani. cat be1 be2 be3 cat be1 be2 > ki Ha nem nevezünk meg állományt, amit be kell olvasnia és fel kell dolgoznia, akkor alapértelmezés szerint a billentyűzetről (standard input) várja a feldolgozandó adatokat. Hasonlóképpen, explicit kimeneti állománynév hiányában a programok a képernyőre (standard output) írnak. cat > ki2 cat < be ~ cat be Opciók -n -b -s
head Az állomány, vagy a bemenet első részét írja a kimenetre Alapértelmezés szerint az adott állomány első 10 sorát jeleníti meg. Opciók -n szám -c szám Példa: ls l head n 1
tail Az állomány, vagy a bemenet utolsó részét írja ki a kimenetre. Alapértelmezetten a bemenet utolsó 10 sorát írja ki. Opciók: -c szám -n szám
wc Megszámolja a bementen a sorok, a szavak és a karakterek számát. Opciók: -c -l -w -L
spell A szűrő a bemenet szavainak helyesírását ellenőrzi, és a kimenetre csak a helytelenül írt szavakat írja ki. Példa: cat angol spell
sort Segítségével az állományok sorait rendezhetjük kölönböző szempontok szerint. Opciók: -r -n -b -i -f
uniq Segítségével az egymást követő azonos sorok kiszűrhetők az inputból. Minden sor csak egyszer kerül a kimenetre. Rendezett inputot feltételez. Opciók: -c -d -i -u
tr Translate or delete characters. Törli vagy cseréli a bementen a paraméterként megadott karaktereket. tr [opciók] [halmaz1] [halmaz2] Opciók: -d -c -s Karakterosztályok: alnum: alphanumeric characters alpha: alphabetic characters cntrl: control (non-printing) characters digit: numeric characters graph: graphic characters lower: lower-case alphabetic characters print: printable characters punct: punctuation characters space: whitespace characters upper: upper-case characters xdigit: hexadecimal characters Példa cat input tr [:upper:] [:lower:] > lc_input
paste Állományok horizontális összefűzését teszi lehetővé Sorokat fűz össze. Opciók: -s -d Példa: paste be1 be2 be1:1 <TAB> be2:1 be1:2 <TAB> be2:2
cut Egy megadott állományból eltávolíthatunk bizonyos részeket, bizonyos számú karaktereket, szavakat Opciók: -c intervallum -d -f intervallum -s Példa: ls l cut c 2-10 sort uniq cut -d ; -f 2- bemenet.csv
rev, tac rev: Megfordítja a bemenet sorait tac: Megfordítja a tejes állományt
Gyakorlat Írj csővezetéket, mely: 1. Kiírja a képernyőre, az adott könyvtárban található állományok méretét blokkban. 2. Kiírja a képernyőre, hogy az adott könyvtárban milyen jogosultsági beállítású állományok vannak. Töltsd le a http://www.inf.unideb.hu/~tballa/op/bemenet1.csv állományt, és írj csővezetéket, mely: 1. Kiírja az összes szervezeti egység nevét 2. Írja ki hány szervezeti egység van 3. Írja ki hány dolgozó van 4. Kiírja az összes szervezeti egységet, és azt, hogy az adott egységben hány ember dolgozik. Név szerint csökkenő sorrendben. 5. Kiírja a legmagasabb fizetést. 6. Kiírja a legalacsonyabb fizetést. 7. Kiírja azokat a szervezeti egységeket, melyben egynél több ember dolgozik.
Gyakorlat Töltsd le a http://www.inf.unideb.hu/~tballa/op/bemenet1.tx t állományt, és írj csővezetéket, mely: Előállítja az állományban található szavak listáját: Melyben minden szó egyszer szerepel, és névsorrendben. Melyben minden szó mellett megjelenik, hogy hányszor szerepel. Írja ki a leggyakrabban használt 7 szót.