Operációs Rendszerek II. labor. 2. alkalom
|
|
- Éva Papp
- 9 évvel ezelőtt
- Látták:
Átírás
1 Operációs Rendszerek II. labor 2. alkalom
2 Mai témák (e)grep Shell programozás (részletesebben, példákon keresztül)
3 grep Alapvető működés: mintákat keres a bemeneti csatorna (STDIN vagy fájl) soraiban, az illeszkedő sorokat kiírja vagy a nem illeszkedőket írja ki vagy csak a találatok számát adja meg grep vs egrep: használt reguláris kifejezéseket leíró nyelv összetettsége eltérő (egrepé komplexebb)
4 Mintaillesztés Legegyszerűbb minta: illesztendő szöveg Pl. alma. Erre illeszkedik: alma, alalma, almalé. Nem illeszkedik: Alma, alma, stb. Vannak tiltott karakterek (.,?, stb.) \. jó Példák: grep apple words Alap grep w apple words Teljes szavakra keres grep c apple words Találatok száma grep v c apple words Nem-találatok száma wc l words Hány sorból áll a fájl?
5 Kis- és nagybetűk grep alapértelmezés szerint érzékeny rá A -i kapcsolóval ez letiltható (de ) Tesztfájl (a.txt) grep alma a.txt grep ALMA a.txt grep i alma a.txt grep i alma a.txt grep almád a.txt grep i almád a.txt alma ALMA AlMA almád ALMÁD
6 Illesztés sor elejére, végére Két speciális karakter, ami a sor elejét és a végét jelöli: Sor eleje: ^ Sor vége: $ Példák: grep ^apple words Így kezdődik grep apple$ words Így végződik grep ^apple$ words Pont ez a szó
7 Igazi minták Tartományok megadása: [x-y] vagy [xyz] grep ^*a-c+w words grep *aa+w words Tagadás: [^x-y] grep *^b-za-z+w words Speciális helyettesítők. (pont) : tetszőleges karakter [:alnum:] [:alpha:] [:digit:]
8 Ismétlődések és egrep Ismétlődések Pont egyszer: ez az alapértemezett 0 vagy egy alkalommal:? 0 n alkalommal: * Alsó és felső határok: {x,y}
9 Igazi minták példákkal Mintafájl (minta.txt) egrep ^*0-9+*$ minta.txt egrep ^**:digit:++*$ minta.txt egrep ^*0..9-+*$ minta.txt egrep ^**:digit:+-+*$ minta.txt egrep ^**:alpha:++*$ minta.txt egrep ^**:alnum:++*$ minta.txt egrep ^*0-9]{4}-[0-9]{2}-[0-9+,2-$ a1c4e abcde
10 Ismétlődések példák Mintafájl (minta.txt) a vagy c betűvel kezdődik egrep ^*ac+ minta.txt 6 betűből áll (pont) egrep ^*a-z+,6-$ minta.txt Legalább 5 betűből áll egrep ^*a-z+,5,-$ minta.txt egrep ^*a-z+,5- minta.txt ^*a-z+,5-$ a betűvel kezdődik és végződik egrep ^a*a-z+*a$ minta.txt egrep ^a.*a$ minta.txt alma ananasz barack citrom dio eper korte
11 Egyszerű shell script alma.sh fájl (vi, pico, stb.): #!/bin/bash echo Hello! Futtatás: > chmod +x alma.sh >./alma.sh
12 Változók Értékadás: a=hello Hivatkozás: echo $a Mindig szöveges: a=2; b=3; echo $a + $b Számok: a=2; b=3; expr $a + $b Változóba írás: c=`expr $a + $b`
13 Fontos változók $0 $1, $2, shift parancs $* ($0 $n) ($1 $n) $# (számosság) $? (státusz) stb. (pl. $HOME, $PWD)
14 Változó behelyettesítés unset alma echo $alma echo ${alma:-semmi} echo $alma echo ${alma:=semmi} echo $alma
15 Shell program vezérlési szerkezetei if then [ elif, else] fi for do done while do done until do done stb.
16 Feltételes elágazás: if Változó értéke: /test parancs/ if [ $0 ne 2]; then echo Használat: $0 <in> <out> exit fi Parancslefutás: if grep alma korte.txt 1>/dev/null 2>&1; then echo Talalt fi
17 Test parancs test vagy [ ] Tipikus: if * xyz +; then echo OK Fájlokra vonatkozó tesztesetek (néhány) - True if -d file: file exists and is a directory. -e file: file exists (regardless of type). -f file: file exists and is a regular file. -r file: file exists and is readable. -s file: file exists and has a size greater than zero. -w file: file exists and is writable. -x file: file exists and is executable. file1 -nt file2: file1 exists and is newer than file2.
18 Test folytatás Szöveges tesztesetek -n string the length of string is nonzero. -z string the length of string is zero. string string is not the null string. s1 = s2 the strings s1 and s2 are identical. s1!= s2 the strings s1 and s2 are not identical. s1 < s2 string s1 comes before s2 based on the ASCII value of their characters. s1 > s2 string s1 comes after s2 based on the ASCII value of their characters.
19 Még tovább Numerikus tesztesetek n1 -eq n2 the integers n1 and n2 are algebraically equal. n1 -ne n2 the integers n1 and n2 are not algebraically equal. n1 -gt n2 the integer n1 is algebraically greater than the integer n2. n1 -ge n2 the integer n1 is algebraically greater than or equal to the integer n2. n1 -lt n2 the integer n1 is algebraically less than the integer n2. n1 -le n2 the integer n1 is algebraically less than or equal to the integer n2.
20 Test és if Írjon egy programot, ami kiírja a paraméterben megadott fájl legfontosabb adatait, így: Létezik? fájl vagy könyvtár? Nullánál nagyobb a mérete? Írható? Olvasható? Futtatható? Ha a parancsot nem egy paraméterrel indították, akkor rövid help-et írjon ki a használatáról!
21 Megoldási javaslat if [ $# -ne 1 ]; then echo "Hasznalat: $0 <fn>" exit 1 fi if [ -e $1 ]; then echo "$1 letezik" if [ -f $1 ]; then echo "-mezei fajl"; else if [ -d $1 ]; then echo "-konyvtar"; fi fi if [ -r $1 ]; then echo "-olvashato"; else echo "-nem olvashato"; fi exit 0 else echo "$1 nem letezik exit 1 fi
22 Ciklusok - for Nem a klasszikus for ciklus, listákon lépked! for a in alma korte barack; do echo $a; done Primitív ls for a in *; do echo $a; done Parancssori paraméterek for a in $*; do echo $a; done Mégis számolunk for i in `seq 2 6`; do echo $i; done