Operációs rendszerek Segédprogramok, szűrők. Vadász2 A mai program Hasznos, vegyes segédprogramok –test, expr, read; startup programok Rekurzió Alapfogalmak.

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Koordináták, függvények
Operációs rendszerek gyakorlat 10. Gyakorlat Vakulya Gergely.
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
3. előadás (2005. március 1.) Utasítások, tömbök
Tóth Dániel, Szatmári Zoltán
LINUX/UNIX PARANCSOK.
JavaScript.
Sztringek.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Operációs Rendszerek Példák
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
C A C nyelv utasításai.
UNIX Összefoglaló az alapokról a ta65 tárgyhoz ( )
Operációs rendszerek gyakorlat
Utasítások, elágazás- és ciklusszervezés C nyelvi utasítások
Scriptnyelvek 9. gyakorlat Papp Gyula április 29.
PHP Webprogramozás alapjai
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Alphabet is a type specification = sorts: alphabet oprs: a:  alphabet,...,z:  alphabet end alphabet; nat is a type specification = sorts:nat oprs:zerus:
Operációs rendszerek gyakorlat Reguláris kifejezések.
Operációs rendszerek gyakorlat. Reguláris kifejezések.
Operációs rendszerek gyakorlat sed, awk parancsok.
Operációs rendszerek 6. gyakorlat sed parancsok. Sed parancs Stream editor – folyamban lévő szöveg szerkesztése Pl.: szöveg lecserélésére Működése: Keres.
Vizuális és web programozás II.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Microsoft Excel Függvények VII..
Operációs rendszerek gyakorlat 4. Gyakorlat Vakulya Gergely.
Operációs rendszerek gyakorlat 2. Gyakorlat Vakulya Gergely.
Operációs rendszerek gyakorlat 6. Gyakorlat Vakulya Gergely.
Operációs rendszerek gyakorlat 9. Gyakorlat Vakulya Gergely.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
C nyelv utasításai.
Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
Összetett adattípusok
Funkcionális programozás 2. gyakorlat
Linux/UNIX tanfolyam UNIX shell scriptek (½ rész)
Grafikus tervezőrendszerek programozása 8. előadás.
Rendezések és szövegkezelő függvények
Operátorok Értékadások
1 Operációs rendszerek I, 3. gyakorlat Windisch Gergely
Készítette: Csíki Gyula
Java programozási nyelv Vezérlési szerkezetek
Reguláris kifejezések
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Scriptelés alapok Tóth Dániel, Szatmári Zoltán Intelligens.
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
Objektum orientált programozás
Webprogramozó tanfolyam
Objektum orientált programozás
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Operációs rendszerek gyakorlat sed parancsok.
Fontos tudnivalók A MATLAB egy fajta objektummal dolgozik (Mátrix)
– SELECT - 1. – Tarcsi Ádám január Adatbázis gyakorlat.
Operációs rendszerek gyakorlat 7. Gyakorlat Vakulya Gergely.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Excel programozás (makró)
C++2. Ciklusok elöltesztelő (for, while) A ciklusmag feldolgozása előtt történik a vizsgálat  lehet, hogy egyszer sem fut le. A soronkövetkező iteráció.
Az 5,6,7 laborok VBA anyagának összefoglalása
Készítette: Rummel Szabolcs Elérhet ő ség: Linux kezelése.
Script nyelvek előadás
AWK ismétlés AWK: adatvezérelt nyelv:
A CLIPS keretrendszer
Informatikai gyakorlatok 11. évfolyam
Előadás másolata:

Operációs rendszerek Segédprogramok, szűrők

Vadász2 A mai program Hasznos, vegyes segédprogramok –test, expr, read; startup programok Rekurzió Alapfogalmak szűrőkhöz A cut, head, tail, grep szűrők Reguláris kifejezések Az awk szűrő

Vadász3 Jó dolog a test parancs! Két szintaxisa is van: test kifejezes[ kifejezes ] Szemantika: Normális (igaz) visszatérési értéke van, ha a kifejezés (szemantikailag) igaz! A kifejezés lehetőségeknek 2 csoportja van: –Fájlokkal kapcsolatos tesztek, –adatszerkezetek relációi.

Vadász4 Fájlokkal kapcsolatos tesztek Csak néhány példa, test -f file test -d file test -r file test -s file stb. az első szintaxissal # file létezik és sima fájl # file létezik és jegyzék # file létezik és olvasható # file létezik és 0-nál hosszabb

Vadász5 Adatrelációk Példák itt is, [ ertek1 -gt ertek2 ] [ ertek1 -eq ertek2 ] stb. [ s1 = s2 ] [ s1 > s2 ] stb. [ -z s1 ] [ -n s1 ] [ s1 ] Igaz, ha # algebrailag nagyobb # algebrailag egyenlő # szövegként egyenlő # szövegként nagyobb # s1 füzér hossza 0 # s1 füzér hossz nem 0 # s1 füzér nem a null füzér

Vadász6 Jó dolog az expr parancs Szintaxisa: expr kifejezes expr kif1 op kif2 Pl.: sum=0 sum=`expr $sum \+ 1` echo $sum Szemantika: –Kiértékelődik a kifejezés és az eredmény az stdout-ra íródik. Vannak algebrai operátorok, zárójelezés lehetséges. Semlegesítés! Itt parancsbehelyettesítés! Vedd észre fehér karaktereket!

Vadász7 bell burokprogram n=${1-1}# mindenképp 1 while [ $n -gt 0 ] do echo -n \7 # sípol n=`expr $n - 1`# csökkenti n-et sleep 1# alszik 1 sec-t done Így hívd: $ bell 3# hármat sípol

Vadász8 Rekurzió lehetséges Pl. a HOME-ban van egy rek shell program: cd $1 ; ls -l# és ha $1 nem jegyzék? for i in * do if test -f $i# ez nem a legjobb! then :# do-nothing parancs else $HOME/rek $i fi done Így hívom: $ rek dir

Vadász9 A read parancs read valt1 valt2...Beolvas egy sort az stdin- ről, és az első szót a valt1- be, másodikat valt2-be s.í.t. teszi. Ha több szó, mint változó: az utolsóba a maradék szavak listája. Információátadás a sh-nek: paraméterekkel, exportált változóval, fájlokkal, read paranccsal

Vadász10 Tanácsok 1 Szabályozzuk, hogy bármi is az interaktív burkunk, a bourne shell dolgozza fel burokprogramjainkat! Ha az első sor –nem kommentár: az sh dolgozik, –#!/bin/shakkor is az sh dolgozik, –#!/bin/kshakkor a Korn shell dolgozza fel, –#/bin/bashakkor a Bourne again shell, –#/bin/cshakkor a c-shell, –ezektől eltérő kommentár: az interaktív shell!

Vadász11 Tanácsok 2 Tanulmányozzuk a login/burokindítási startup programokat! Sajátjainkat “igazítsuk“! Vannak “rendszer-széles“ és “saját” startup-ok! Sorrend! Fogalmak –Bejelentkezési burok (login shell) –Interaktív burok (tartozik hozzá konzol terminál) –Nem interaktív burok Ahol van, a /etc/environment –beli definíciók bekerülnek a környezetbe

Vadász12 Tanácsok 2 Login sh, bash, ksh –rendszerszéles: /etc/profile –saját:~/.bash_profile# csak bash –saját:~/.bash_login# csak bash –saját:$HOME/.profile Interaktív bash (rshd daemonnal indított is) –Saját: ~/.bashrc Nem interaktív bash –$BASH_ENV POSIX interaktív (bash, ksh) –$ENV TC shell burokindítási és login –rendszerszéles: /etc/cshrc –saját: ~/.cshrc ~/.login

Vadász13 Tanácsok 3 Tanulmányozzák, mi hol található! Vannak konvenciók! Jó összefoglalás a Bartók-Laufer könyv 72. oldalán.

Vadász14 A szűrők Szabványos bemenetüket olvassák –azt szöveg-folyamnak tekintik, ami –sorvég karakterekkel sorokra tagolt. A sorokat így értelmezik. –Argumentumban is lehet a szabványos bemenet megadva. A szabványos kimenetükre teszik a "szűrt" (átalakított) eredményüket.

Vadász15 Alapfogalmak a szűrőkhöz A sor/rekord (line) A mező, szó (field, word) A mezőelválasztó karakter (field separator) –a fehér karakterek gyakran alapértelmezés szerintiek, –gyakori a : (colon) mezőelválasztó. –Egyes segédprogramokban beállíthatók. Néha értelmezett a blokk. Mindig a karakter.

Vadász16 A cut szűrő A bemenet (file) sorainak kijelölt mezőit (táblázatok oszlopait) kivágja, és csak ezeket továbbítja > cut -clist [file] > cut -flist [-dchar] [-s] [file] ahol list vessző-szeparált növekvő mezőszámok, tartományok. -clist: oszlop-pozíciók. Pl. -c3,14-72 kivágja a 3. és a pozíciókat. -flist: mezőelválasztókkal (default=tab) szeparált mezőket azonosít, ahol is megadható az elválasztó: -dchar argumentummal. -s elnyomja a mezőelválsztó nélküli sorokat.

Vadász17 A cut szűrő, példák > cut -d: -f1-5 /etc/passwd # az első 5 mező # a passwd fájlból > name=`who am i | cut -f1 -d” ”` # login név a name-ba > cut -c2-3,5,7,38-54 myfile.txt # oszlopszámok szerint

Vadász18 A head és tail szűrők > head [-count] [file] > tail [+-numb lbcr] [file] > tail [-lbcr] [file] > tail [+numb lbcf] [file] > tail [-lbcf] [file] # az első count sorát # +numb elejétől számított, # -numb végétől számított # adott sor (l), blokk (b), char (c). # -r startpont a fájl vége, nem számít az előjel és fordított sorrendű az l, b, c. # -f follow opció: ha nem csőbe szűr, másolás után blokkolódik, várva, hogy még hozzáfűznek. Pl.: $ tail +5 vmi | head -1 # kiírja a vmi 5. sorát

Vadász19 A grep család (grep, fgrep, egrep) > grep [opciok] minta [fájl-lista] Szemantika: olvassa a fájl-lista fájljainak sorait. Minden sorra illeszti a mintát. Ha találat van: kiírja azt a sort. Visszatér: 0 - normális, ha találat van, 1 - ha nincs egyetlen találat sem, 2 - ha akadály van. Opciók: -n # kiírja a sorszámokat is, -v# nem egyezést keres, -y# kis/nagybetűt megkülönböztet, -c # csak a sorszámot írja ki.

Vadász20 A szabályos kifejezések (Regular expressions) Sok szűrő (grep, awk, ed, lex stb) használja keresési mintaként. Különböztessük meg a fájlnév behelyettesítési mintától! Bartók-Laufer 107. oldal, Kernighan-Pike 335. oldal. A szabályos kifejezés (regex) szöveg, ami illeszkedik szövegre. Bennük bizonyos karaktereknek speciális jelentésük van, ezek a metakarakterek. Metakarakterek: újsor. [ ] ^ $ * | ( ) A regex elemek: atom, lezárt, összefűzött és unió.

Vadász21 A regex elemek: atom Atom: kerek zárójelek közötti regex (regex), vagy alábbiak egyike cc normális karakter, önmagára illeszkedik \cc speciális karakter, önmagára illeszkedik.. (dot) bármely nem újsor karakterre illeszkedik [chars]Egyetlenre a bezártak közül, adható tartomány is [^chars]Egyetlenre a bezártakon kívül, tartomány is lehet ^Első karakter előtti üres szövegre $Utolsó karakter utáni üres szövegre

Vadász22 A regex elemek: lezárt Lezárt: olyan atom, amit opcionálisan egy postfix operátor követ (ebből: az atom degenerált lezárt) atom* az atomnak nulla vagy több előfordulására illeszkedik atom+ az atomnak egy vagy több előfordulására illeszkedik atom- az atomnak nulla vagy egy előfordulására illeszkedik

Vadász23 Regex elemek: összefűzött Az összefűzött akárhány egymás utáni lezártból áll. Először a első, utána a második s.í.t. lezárt illeszkedésekor az összefűzött is illeszkedik. Miután akárhány lezárt alkothat összefűzöttet, a lezárt degenerált összefűzött

Vadász24 Regex elemek: unió Akárhány összefűzött, melyeket a | karakter választ el Illeszkedésnél választási lehetőséget ad: akár az első, akár a második s.í.t összefűzött illeszkedésénél az unió illeszkedik

Vadász25 Az illeszkedési példák abcdösszefűzött karakterek önmagukra illeszkednek ^stringösszefűzött string a sor elején illeszkedik string$összefűzött string a sor végén illeszkedik [...]atom, illeszkedik a... közül egyetlen karakterre [^...]atom, bármely, egyetlen kar., ami nincs a...-ban [a-z] [0-9]atom, egyetlen bezárt karakterre a tartományból [^A-D0-2] több tartomány és negáció lehetséges

Vadász26 Az illeszkedés c* [...]*lezárt, illeszkedik 0 v. több előfordulására c-nek c+lezárt, illeszkedik 1 v. több előfordulására c-nek c?lezárt, illeszkedik 0 v. 1 előfordulására c-nek [.]*lezárt, bármilyen füzér.*lezárt, bármilyen füzér, akár üres is ^$összefűzött, csak üres sorra illeszkedik ^[0-9]*$csak számokat tartalmazó sorra illeszkedik Az awk-ban további lehetőségek is vannak!

Vadász27 Fájlnév-minta kontra reguláris kifejezés Mindkettő minta, mindkettő illeszkedik, de az –egyik fájlnevek terére illeszkedik és fájlnév listára helyettesítődik be; –a másik szövegsorokra illeszkedik és akció következik be. A burok a metakaraktereket kezeli: operátornak veszi őket, fájlnév behelyettesítő mintáknak stb. Vannak közös „dzsókerek”. A reguláris kifejezéseket “el kell juttatni“ a szűrőkhöz. Semlegesíteni kell, nehogy a burok kifejtse azokat! Ne feledkezzünk meg erről! Sok bosszúságot takaríthatunk meg!

Vadász28 Gyakori vizsgálat: val csak számokat tartalmaz? if echo $val | grep ‘[^0-9]’ > /dev/null then echo ‘ez nem numerikus’ elseecho ‘ez tisztan numerikus’ fi Mit csinál ez? $ ls -l *txt# hosszú lista a txt-re végződő fájlokról Hosszú listát kérünk a nem txt-re végződőkről: $ ls -l | grep -v ‘txt$’ A sort szűrő Rendez. Nézz utána!

Vadász29 Az awk, nawk szűrő Mintakereső és feldolgozó. Szövegfolyam sorokat olvas, minden sorban mintákat keres és a mintákhoz tartozó akciókat végrehajtja. Szintaxis: > awk [-Fc] [program] [parameterek] [fájl-lista] Szemantika: beolvassa a sorokat. A sorok szavait rendre az 1, 2, stb. nevű változóiba teszi. Soronként illeszt a programban megfogalmazott minden mintát, és ha találat van, végrehajtja a mintákhoz tarozó akciókat a sorra. A mintamegadásban, az akciókban használhatja az $1, $2 stb. változótartalmakat, egyéb belső változóit is. Aho-Weinberger -Kerighan

Vadász30 Az awk program Formája: [ minta] {akciók}... Megjelenhet literálisan: awk ‘program’ vagy szövegfájlban: awk -f fájlnév Az akciók: C-szerű utasítások, utasításblokkok. > who | awk ‘{print $3 $4 $5 $1 $2}’ # nincs minta

Vadász31 Az awk akciók if (feltétel) utasítás [else utasítás] while (feltétel) utasítás for (kif1; kif2; kif3) utasítás break, continue {utasítás; utasítás;...} printf formátum, kifejezéslista print kifejezéslista for (name in array) utasítás next exit C szerű awk szerű

Vadász32 Az awk minták Legtöbbször reguláris kifejezések. Pl: ’/^Valami/ {print ”Megtalaltam sor elejen Valami-t.”}’ Üres minta minden sorra illeszkedik. Pl.: ‘{print “Minden sorra kiirodik ez”}’ Lehet a sor szavainak relációja is: ’$2==”valami” {print ”megtalaltam valami-t a 2. mezoben”}’ Vannak speciális awk minták: BEGIN# az első sor előtt illeszkedik END# az utolsó sor után illeszkedik

Vadász33 Hangsúlyozom A grep-ben egyetlen minta van, az awk-ban több is. A grep mintája minden sorra illesztendő, és találatkor ki/nem kiírni a sort. Az awk-ban minden minta a leírt sorrendben minden sorra illesztendő, találatkor a mintához tartozó akció végrehajtandó. Az awk-ban a BEGIN és az END nem utasítás zárójelek, hanem minták! Különlegesen illeszkednek!

Vadász34 Feladat: a második szó üres $2 == ““ $2 ~ /^$/ $2 !~ /./ length($2) == 0 NF < 2 A 2. mező üres A 2. mező egyezik az üres karakterlánccal A 2. mező semmilyen karakterrel nem egyezik A 2. mező hossza nulla (Az eddigiek bármilyen változóra is!) A mezőszám kisebb, mint kettő (Ez csak a 2. szóra!)

Vadász35 Néhány awk változó $1, $2 stb. a szavak. A $0 pedig az egész sor! FSa mezőelválasztó karakter NFa mezőszám az aktuális sorban NRaz aktuális sor sorszáma RSaz input sorok elválasztó karaktere FILENAMEaz aktuális input fájl neve stb. továbbá az awk programokban a felhasználó által definiált változók

Vadász36 Példák Számláljuk az input sorait (kicsit erőltetetten!) awk ’ BEGIN {s=0}/* inicializálunk */ {s=s+1} /* minden sorra! */ END{print ”osszeg: ”, s} /* kiírunk */ ’ Írjuk ki a passwd fájl 5. sorát! awk ’NR==5 {print $0}’ /etc/passwd Írjuk ki a neveket, a gid-eket formázva! awk -F: ’{printf ”%8s %4s\n”, $1, $4}’ /etc/passwd awk ’BEGIN {FS=”:”} {printf ”%8s %4s\n”, $1, $4}’ /etc/passwd

Vadász37 Az awk operátorok * / % + - >= == != ~ !~ ! && || = += -= *= /= %= pre/postfix inkrem. dekrem. multiplikatív operátorok additív operátorok kar.lánc összekapcs (a semmi op.) relációs op. ~ az egyezés operátora negáció logikai és logikai vagy értékadó operátorok

Vadász38 Az awk beépített függvényei sqrt(), log(), exp(), int()matematikai függvények length(string) string hosszát visszaadó substr(s,m,n)s-ből m-től n-hosszan substringet index(s,t)s-ben t első előfordulásának indexe Néha kellene: shell változó értéket jutassunk az awk-ba! Linuxon csak a nawk-val: > nawk -v valt=shell_kif ’prog’ infile Egyébként: > awk valt=kif ’prog’ infile

Vadász39 Példák A PATH környezetváltozó: PATH=vmi:vmi1:vmi2 > set | awk ’BEGIN {FS=”:”} /PATH/ {for(i=1;i<=NF;i++) print $i }’ > echo $PATH | awk ’BEGIN {FS=”:”} {i=index($0, ”=”); print substr($1,i+1, length($i)-i); for(i=2;i<=NF; i++) print $i; }’

Vadász40 Változók, tömbök az awk-ban Eddig: $1,…, NR, NF stb. Saját változó definiálható: valt ertekado_op kifejezes Pl: x = $2 * 15; Tömbváltozó definíció: t_name[konst_kif] ert_op kif Pl: sum[$1] = 0; Figyelem! Az indexkifejezés nem feltétlenül numerikus! Hivatkozás rá: valt print x; Hivatkozás rá: t_name[kif] sum[mary]

Vadász41 Egy példa Van egy szovegfájlunk: joe200 mary400 joe400 john300 susie500 mary200 Van egy awk programunk: {sum[$1] += $2} END {for (name in sum) print name, sum[name] } Így hívjuk meg: > awk -f prog szoveg 4 tömbelem definiálódott!

Vadász42 Az előző példához magyarázat sum[joe] sum[mary] sum[john] sum[susie] Az első akció minden sorra végrehajtódik. Csak 4 tömbelem definiálódik. A 2. akció a végén hajtódik végre. Különleges for (... in...) ciklus! A ciklusban a name változó felvesz minden lehetséges index értéket! Most már megmagyarázhatod, mit is csinál a program!

Operációs rendszerek Segédprogramok, szűrők Vége