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

Hasonló dokumentumok
Szkriptnyelvek. 1. UNIX shell

A Unix felépítése. Logikai file rendszer egységes directory struktúra. Egy Unix file rendszer belső szerkezete

Unix történet. M eredetileg két vonal: System V - BSD. M megvalósítások gyártónként különböznek. M a Unix tulajdonságai M POSIX. jelenleg összemosódik

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

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

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

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

1. Alapok. #!/bin/bash

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

BASH SCRIPT SHELL JEGYZETEK

chmod umask chown, chgrp

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 héj vezérlő szerkezetei I.

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

Operációs rendszerek 1.

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

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

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. #!

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

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.

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

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

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

Operációs rendszerek gyak.

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

AWK programozás Bevezetés

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

Pénzügyi algoritmusok

Komputeralgebra Rendszerek

A shell vezérlő szerkezetei I.

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

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

Operációs rendszerek 1.

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


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

Operációs rendszerek MINB240/PMTRTNB230H

Informatika terméktervezőknek

LINUX PMB LINUXOS PARANCSOK ÉS HASZNÁLATUK - GRUB

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

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

A C programozási nyelv I. Bevezetés

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

A C programozási nyelv I. Bevezetés

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Programok értelmezése

Operációs rendszerek gyak.

Rendszerprogramozás Linux környezetben

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

Operációs Rendszerek. Windows Parancssor

C programozás. 1 óra Bevezetés

Kifejezések. Kozsik Tamás. December 11, 2016

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Szövegek C++ -ban, a string osztály

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

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Programozás I gyakorlat

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

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Operációs rendszerek. 2. gyakorlat. Munka állományokkal UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Powershell 1. gyakorlat

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

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Operációs Rendszerek II. labor alkalom

Szűrők, reguláris kifejezések AWK programozás: minták, vezérlési szerkezetek, tömbök, beépített függvények, reguláris kifejezések

Powershell 2. gyakorlat

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

Webprogramozás szakkör

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

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Java II. I A Java programozási nyelv alapelemei

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

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

A C# programozási nyelv alapjai

Hálózatok építése és üzemeltetése

Programozás I gyakorlat

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Programozás II. 2. Dr. Iványi Péter

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Stack Vezérlés szerkezet Adat 2.

Programozás alapjai. 5. előadás

Windows rendszeradminisztráció és Microsoft szerveralkalmazások támogatása. 9. óra. Kocsis Gergely, Kelenföldi Szilárd

Csatlakozás a pandora.inf.elte.hu-re Linux alapparancsok

Java II. I A Java programozási nyelv alapelemei

PYTHON. Avagy hosszú az út a BioPythonig

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Operációs rendszerek I. IIII. gyakorlat

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

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

Hardver leíró nyelvek (HDL)

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)

Flex tutorial. Dévai Gergely

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

Programozási nyelvek JAVA EA+GY 1. gyakolat

Python tanfolyam Python bevezető I. rész

length (s): Az s karaklerlánc hossza, substr(s,m,n): Az s mezőben levő karakterláncnak az m-edik karakterétől kezdődő, n darab karaktert vágja ki.

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

Funkcionális Nyelvek 2 (MSc)

Verziókezelt konfigurációmanagement++ Pásztor György, SZTE Klebelsberg Könyvtár

Átírás:

(bash) shell programozás input fellgozása Parancsok értelmezése 1. tokenekre bontás 2. tokenek parancsba szerkesztése Tokenek szavak» határolói: szeparátor vagy operátor» szeparátor: space, tab, newline operátorok > >> >& > < << <<- <& <> & ; ( ) && ;; (( )) & newline értelmezése 1. ha a sor értelmezhető befejezett parancsként, akkor értelmeződik 2. ha a sorban nincsen szó, akkor törlődik 3. egyébként a newline érvénytelen, a parancs értelmezése folytatódik 1. Kulcsszó 2. Nem idézett alias 3. Belső parancs 4. Függvény deníció 5. Beépített segédprogram 6. Egyéb beépített segédprogram 7. Abszolút pathnév 8. Futtatható program a path-ban 1 2 Kulcsszavak Belső parancsok case ne elif else esac for function if in select then until while { break : continue. le eval exec exit export reanly return set shift trap unset nem POSIX: select 3 4 Beépített segédprogramok Összetett parancsok alias bg cd command false fc fg getopts jobs kill newgrp read true umask unalias wait futtatás sub-shellben ( list ) futtatás direct { list ; { list & feltételes végrehajtás if case select (bash) ciklusok for while until függvény deníció function name { list; name () { list; 5 6 Page 1

Logikai értelmű vizsgálatok test program test args [ args ] konstansok true, false test program argumentumai string összehasonlítások» s1 = s2» s1!= s2 numerikus összehasonlítások» n1 -eq n2 n1 = n2» n1 -ne n2 n1 n2» n1 -lt n2 n1 < n2» n1 -le n2 n1 n2» n1 -gt n2 n1 > n2» n1 -ge n2 n1 n2 File vizsgálatok (test argumentumai) minden teszt -operator le alakú operátorok s: a le létezik és nem 0 méretű f: a le normál le r: a le létezik és olvasható w: a le létezik és írható x: a le létezik és futtatható d: a le létezik és directory u: a le létezik és set-uid bit be van állítva g: a le létezik és set-gid bit be van állítva le1 -nt le2» le1 újabb le2-nél le1 -ot le2» le1 régebbi le2-nél le1 -ef le2» le1 egy másik neve le2 7 8 test argumentumainak logikai kombinációja NOT! expr AND expr1 -a expr2 OR expr1 -o expr2 csoportosítás ( expr ) Feltételes végrehajtás if list then list [elif list then list]... [else list] case word in patterni) commi ;;... esac if test $1 = 'alma' then echo '$1=alma' case $fn in *.c *.cpp ) cppcompile $fn;; *.pas ) pascompile $fn;; * ) echo "Nem denialt $fn";; esac 9 10 Ciklusok Parancsok futtatása for name [ in w1.. wn ] commands ne while list list ne repeat list list ne Pld. for i in * echo $i ne direct futtatás (beépített parancsok) direct futtatás sub-shellben (új subshell indul) () & ` indirect futtatás sub-shellben (külső parancs, shell) Példa cd ~/one X=1; Y=2; Z=3 export X (cd../two; pwd; Y=7; echo $X $Y $Z) pwd echo $X $Y $Z 11 12 Page 2

Kifejtés (expansion) Brace expansion Brace expansion a{d,c,be ----> 'ade ace abe' Tilde expansion login név Parameter expansion ${parameter Command substitution $(command) `command` Arithmetic expansion $[expression] $((expression)) Pathname expansion *? [abc] [a-z] nem POSIX és nem Bourne kompatibilis letiltható bash -nobreaceexpansion set +o breaceexpand szintaktika {zárójelpár {között legalább egy, egymásba ágyazható végrehajtás balról jobbra eredménye több szó példa mkdir {Varga{Tibi,Kati,Judit,Kriszti,TothJutka mkdir VargaTibi VargaKati VargaJudit VargaKriszti TothJutka 13 14 Tilde expansion Parameter expansion 1. HOME directory ~ att felhasználó HOME directory-ja ~user HOME directory alatti directory-k ~/alma/korte ~lakatos/alma/korte aktuális directory (PWD változó értéke) ~+ előző directory (OLDPWD változó értéke) ~- ha user nem létezik nincs ~ helyettesítés alap (basic expansion) $param ${param feltételes (conditional expansion) ${param:-word ha param létezik és értéke nem zérus - $param ha param nem létezik - word ${param:?word ha param létezik és értéke nem zérus - $param ha param nem létezik vagy zérus akkor» hibaüzenet, ami word» ha nem interaktív shell, akkor kilép ${param:+word ha param létezik és értéke nem zérus - semmi ha param nem létezik - word 15 16 Parameter expansion 2. opcionális értékadás (csak változókra) ${param:=word ha param létezik és értéke nem zérus - $param ha param nem létezik - word; mellékhatás: param értéke word hossz meghatározás ${#param param hossza (karakterek száma) mintaillesztés (pat-re pathname expansion) ${param#pat param eleje illeszkedik - (legrövidebb) ${param##pat param eleje illeszkedik - (leghosszabb) ${param%pat param vége illeszkedik - (legrövidebb) ${param%%pat param vége illeszkedik - (leghosszabb) Command substitution parancshelyettesítés a parancs output helyettesítődik néhány karakter megtartja speciális jelentését $ ` \ kétféle szintaktika `command` a régebbi Bourne shell-ben csak ez működik $(command) egymásba ágyazható példák echo `echo `echo korte` alma` bash: alma: command not found echo korte echo $(echo $(echo korte) alma) korte alma 17 18 Page 3

Arithmetic expansion Aritmetikai operátorok aritmetikai értelmezés $[expression] (csak bash) $((expression)) egymásba ágyazható oktális számok 0 prex hexadecimális számok 0x vagy 0X prex tetszőleges számrendszerű számok [base#]number operátorok, mint C példa a=b+9; b=-2; echo $((a*5)) 35 - + unary minus and plus! ~ logical and bitwise negation * / % multiplication, division, remainder + - addition, subtraction << >> left and right bitwise shifts <= >= < > comparison ==!= equality and inequality & bitwise AND ^ bitwise exclusive OR bitwise OR && logical AND logical OR = *= /= %= assignment += -= <<= >>= &= ^= = 19 20 Néhány előre deniált változó Shell belső parancsok 1. POSIX PATH, CDPATH, HOME, ENV, PS1, PS2, IFS,... directoryk PWD, OLDPWD prompt PROMPT_COMMAND rejtett le-ok le-név helyettesítésnél glob_t_lenames változók értékadása PROMPT_COMMAND=alma változók beállítása glob_t_lenames= változók törlése unset glob_t_lenames üres utasítás (az argumentumok kiértékelődnek!) : [args] shell script behelyezése (include). le [args] source le [args] parancs futtatása subshell nélkül exec command parancs képzés, majd végrehajtás eval [args]» alma=korte» eval $alma» bash: korte: command not found kilépés a shellből exit [n] 21 22 Shell belső parancsok 2. Shell belső parancsok 3. ciklusból kilépés (több szintet is) break [n] ciklus következő (akár több) iterációja continue [n] függvény viszatérési értéke return [n] változók exportja (környezeti változók) export [name=[word]]... változók attribútumai (nem POSIX) declare [-frxi] [name=value] typeset [-frxi] [name=value] reanly [-f] [name...] változók törlése unset [name...] új változók automatikus/nem automatikus exportja set ±a pozicionális paraméterek megváltoztatása set arg1 arg2... pozicionális paraméterek léptetése shift [n] terminálótt háttérprocesszek jelzése azonnal/következő promptnál set ±b le-név helyettesítés letiltása/engedélyezése set ±f command line editor beállítása set -o vi szignálok kezelése trap [command] [sigspec] 23 24 Page 4

Shell beépített parancsok 1. Shell beépített parancsok 2. rövidítések (alias) megadása, kiírása alias [name=value] alias megszüntetése unalias [name] jobok kiiratása jobs job háttérbe helyezése bg [jobspec] job előtérbe helyezése fg [jobspec] processz befejezésének megvárása wait [pid] szignál küldése egy job-nak kill [-signspec] [pid jobspec] kill -HUP 14745 parancs futtatása command command directory váltás cd [dir] aktuális directory kiiratása pwd változó értékének interaktív olvasása read [name...] új le létehozásának maszkja umask [mode] kiírás a standard outputra echo [-nee] [args...] kilépés a login shellből logout 25 26 Shell beépített parancsok 3. directory stack kiiratása dirs directory stack növelése pushd [dir] directory stack csökkentése popd [+/-n] directory stack rotálása pushd +/-n aritmetikai kifejezés kiértékelése let expr... rövid információ a beépített(!) parancsokról help pattern command history kiiratása history Példák 1. jelezzük, ha péntek 13. van 1. változat 2. változat set `date` if test $1 = 'Fri' then if test $3 = '13' then echo Vigyazz! alma=`date '+%a%d'` if test $alma = 'Fri13' then echo Vigyazz 27 28 Példák 2. awk le-ok átnevezése.htm-ről.html-re for fn in *.htm mv $fn $(basename $fn.htm).html ne le-ok összecsomagolása echo '# To unbundle, sh this le' for i echo "echo $i 1>&2" echo "cat >$i <<'End of $i'" cat $i echo "End of $i" ne sorokat olvas alapvetõ feladat: mintaillesztés minták: reguláris kifejezés illeszkedõ mintákra meghatározott tevékenység input egységes: sorok sorokon belül paraméterek awk-n belül soronként $1, $2,... deniálható szeparátor tevékenység C szintaktikával változók deniálása nem szükséges asszociatív tömbök 29 30 Page 5

awk - szintaktika awk - példa lehetséges sorok BEGIN { action { action pattern pattern { action pattern1, pattern2 { action END { action előre deniált változók FS NF NR ARGC ARGV szeparátor mezõk száma a rekodban (sorban) az olvasott rekork (sorok) száma argumentumok száma argumentumok tömbje írjuk ki az azonos login nevű felhasználókat, majd írjuk ki a login neveket a hozzá tartozó UID-al BEGIN { FS = ":" { if (user[$1] { printf "%s duplicated\n", $1 user[$1] = $3 END { for (i in user) printf "%s = %s\n", i, user[i] 31 32 Page 6