Linux/UNIX tanfolyam UNIX shell scriptek (½ rész)

Slides:



Advertisements
Hasonló előadás
Algoritmusok.
Advertisements

1 Bori Tamás Operációs Rendszerek I. 2. óra: parancssori alapok.
Operációs Rendszerek I.
Operációs Rendszerek I.
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
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
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
Tóth Dániel, Szatmári Zoltán
LINUX/UNIX PARANCSOK.
Programozás alapjai.
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.
Operációs Rendszerek Példák
Parancssori argumentumok Primitív típusok Operátorok Vezérlési szerkezetek Tömbök Ürmös Beáta, 2011.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
C A C nyelv utasításai.
C A C nyelv utasításai. Ismétlés Utasítások csoportosítása.
Borland C/C++ mintapéldák fájlokra. 1. példa Írjon olyan programot,amely megnyit egy hw.txt fájlt és írja bele a Hello világ szöveget. Ez után zárja le.
UNIX Összefoglaló az alapokról a ta65 tárgyhoz ( )
Java programozási nyelv 2. rész – Vezérlő szerkezetek
Operációs rendszerek gyakorlat
PHP Webprogramozás alapjai
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Operációs rendszerek gyakorlat
Operációs rendszerek gyakorlat sed, awk parancsok.
Linux felhasználói ismeretek
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
WEB Technológiák ISAPI ME Általános Informatikai Tsz. dr. Kovács László.
Operációs rendszerek gyakorlat 4. Gyakorlat Vakulya Gergely.
Operációs rendszerek gyakorlat 2. Gyakorlat Vakulya Gergely.
Operációs rendszerek gyakorlat 5. Gyakorlat Vakulya Gergely.
Operációs rendszerek gyakorlat 6. 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:
PHP III. Fájlok, űrlapok.
PHP VII Sütik, munkamenetek. Sütik Mi az a süti? A süti (cookie) állapotot tárol a felhasználó böngészőjében. Pl. ha egy oldalon beállítható, hogy milyen.
C nyelv utasításai.
Összetett adattípusok
Funkcionális programozás 2. gyakorlat
Operációs rendszerek gyakorlat 1. Bevezetés Vakulya Gergely.
Grafikus tervezőrendszerek programozása 8. előadás.
A Pascal programozási nyelv alapjai
A Pascal programozási nyelv alapjai
Fájlkezelés Pascalban
Az ABAP programozási nyelv Alapvető vezérlési szerkezetek
Ciklusok (iterációk).
1 Operációs rendszerek I, 3. gyakorlat Windisch Gergely
Készítette: Csíki Gyula
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
Java programozási nyelv Vezérlési szerkezetek
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.
Óravázlat Készítette: Kucsera Mihály és Toldi Miklós
Power Lutár Patrícia Pellek Krisztián.  -ltLess than  -leLess than or equal to  -gtGreater than  -geGreater than or equal to  -eqEqual to  -neNot.
Operációs rendszerek gyakorlat sed parancsok.
Illés Zoltán ELTE Informatikai Kar
Török Katalin és Marosi Nóra 11/c. Pascal: Az es években megjelent magas szintű programozási nyelv, közel áll az emberi gondolkodáshoz. Nevét.
Illés Zoltán ELTE Informatikai Kar
Excel programozás (makró)
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
Számítógépes Grafika 3. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
Készítette: Rummel Szabolcs Elérhet ő ség: Linux kezelése.
Script nyelvek előadás
Excel programozás (makró)
Unix Linux GNU Copyright kriptográfia
Operációs rendszerek I.
A CLIPS keretrendszer
Példa: Dinteger = {..., -1,0,1,...}; Dboolean = {true, false};
Bevezetés a programozásba Algoritmikus gondolkodás
Számítógépes alapismeretek Shell script programozás
Informatikai gyakorlatok 11. évfolyam
Előadás másolata:

Linux/UNIX tanfolyam UNIX shell scriptek (½ rész) Tar József (Szüri) szurilo@sch.bme.hu 2005. november 7.

Héjak(shellek) A UNIX rendszerek legalapvetőbb munkakörnyezete Közönséges felhasználói program Sokféle héj létezik sh csh ksh tcsh ash vsh zsh bash

Héjak(shellek) Legfontosabb tulajdonságok: Parancsértelmező, mely a parancsokat a standard bemenetről(stdin) vagy fájlból olvassa Egyszerűen kialakíthatók az ún. shell sriptek(parancsállományok) A shell scripteket ugyanúgy paraméterezhetem akárcsak a programokat Ez egy programnyelv, mely string változókra és hatékony vezérlési szerkezetekre épül. Lehetővé teszi a B/K átirányítását, csővezetékezést, processzek kezelését Könnyű konfigurálhatóság, stb.

Parancssor,argumentumok,B/K Egy parancssor legegyszerűbb formája: parancs arg1 arg2 … argn pl. grep pista /etc/passwd A paraméter lehet: egyszerű karakterlánc állománynév karakterlánc joker(helyettesítő) karakterekkel Egy újabb parancs, ez a parancshelyettesítés Be/Kivitel átirányítása stdin (0) stdout (1) stderr (2)

B/K átirányítás stdin stdout hozzáfűzés stdout-al (>>) stderr pl.: cat < file1 vagy cat 0< file1 stdout pl.: ls > file2 vagy cat 1> file3 hozzáfűzés stdout-al (>>) Pl.: cat >> file4 stderr find / -name "*" -print find / -name "*" -print 2> /dev/null

Csővezeték(pipe) Speciális állomány ami egy FIFO-t valósít meg. A csővezeték mérete véges A stdin és stdout is csővezetékbe irányítható. pl. sort file1 | wc –w >file2 Vagy pl. ls | pr A FIFO-nak nem kell nagynak lennie(csak 8Kb) hiszen az egyes parancsok párhuzamosan futnak. Az eredmény a cső végén még azelőtt megjelenhet, mielőtt az első program az összes bemenetét feldolgozná.

Parancshelyettesítés Egy programnak paraméterként egy másik program eredményét adjuk át. Pl.: more `grep –l halacska *` A különbség a csővezeték és a parancshelyettesítés között az, hogy míg a csővezetéknél az adatok a stdin-ről jönnek azok párhuzamosan is végrehajtódhatnak, addig itt az aposztrófok közé szorított parancsnak ki kell teljesen értékelődnie mielőtt eredménye átadódhatna.

Parancssorozatok,Joker karakterek Pontosvesszővel elválasztás: pl.: date ; ls Egy parancs végrehajtása után hátrahagy egy kilépési értéket(exit status). || és && használata, feltételesen végrehajtódó sorozat parancs1 || parancs2 parancs1 && parancs2 Joker karakterek: * nulla vagy tetszőleges számú tetszőleges karakter ? Pontosan egy tetszőleges karakter [abd] Az „a” avgy „b” vagy „c” karakterek egyike [a-z] Az a-z intervallumból egy karakter

Szinkronizáció, background Eddig a kiadott parancsaink egymás után szinkronban futottak le. Lehetőség van azokat egyszerre, egymással aszinkron állapotban is futtatni. pl.: date & Vagy pl. cc source > program & Parancskiadásakor egy a parancshoz rendelt folyamat jön létre azonosítóval együtt. megszakítás(CTRL-Z), újraindítás(fg) jobs parancs kiadásával megtekinthetjük a felfüggesztett folyamatokat

Shell script(parancsállomány) Egy shell script egy szöveges fájl, mely parancsokat és vezérlési szerkezeteket tartalmaz. Legyen egy ilyen shell scriptünk most a my_script nevű. Tartalma: #!/bin/bash echo Hello World A shell maga is egy program ahogy azt már említettük, vagyis rekurzíve újra lefuttatható. Egy shell scriptet így egy shellből a következőképpen futtathatok: sh my_scipt

Bourne Shell(változók) Irjuk be a parancssorba: ora=24 Ezután egy parancsfájlba azt hogy echo Egy nap $ora órából áll A rendszer válasza: Egy nap órából áll Ez gáz. Ilyenkor exportálnunk kell. (export ora)

Bourne Shell(változók) Speciális változók: $0 parancsállomány neve $# indítási paraméterek száma $* összes indítási paraméter $1, $2,…,$n az első második n-edik paraméter $$ processz szám $HOME home katalógus neve $PATH keresési út Stb.

Legfontosabb belső parancsok break Kilép a while, until, for vagy select hurokból continue A while, until, for vagy select következõ ciklusát kezdi el eval [Argumentum ...] Beolvassa az Argumentumokat shell inputként, és az eredményként létrejövõ parancso(ka)t végrehajtja exit A shell befejezi futását és az n értékkel tér vissza let Kifejezés ... Kiértékeli a megadott atritmetikai kifejezést read [Var] Beolvas egy sort a standard bemenetrõl a Var változóba shift [n] Átszámozza a pozíciós paramétereket n+1-tõl kezdve 1, 2 ...-re.

Legfontosabb belső parancsok A feltételeket a test, az [ és ] illetve a [[ és ]] parancspárral adhatjuk ki, állományok jellemzõinek vizsgálatára, számok, stringek összehasonlítására [-a File] Igaz, ha a File létezik [-n String] Igaz, ha a String nem nulla hosszúságú [File1 -nt File2] Igaz, ha File1 létezik és újabb, mint File2. [String = Minta] Igaz, ha a String egyezik a Mintával [String1 > String2] Igaz, ha String1 a String2 után következik könyvtári sorrendben [Kifejezés1 -eq Kifejezés2] Igaz, ha a Kifejezés1 egyenlõ Kifejezés2-vel. [Kifejezés1 -lt Kifejezés2] Igaz, ha a Kifejezés1 kisebb, mint Kifejezés2 [Kifejezés1 -ge Kifejezés2] Igaz, ha Kifejezés1 nagyobb vagy egyenlõ, mint Kifejezés2

Vezérlési szerkezetek If feltétel: If parancsok then parancsok else parancsok fi For ciklus: for i in s1 s2 … do parancsok done If test $1=‘alma’ then echo ‘$1=alma’ fi for i in alma körte do echo $i done

Vezérlési szerkezetek While ciklus: while parancsok do parancsok done Until ciklus: until parancsok C=0 while [ $C -lt 10 ]; do echo The counter is $C C=`expr $C + 1` done C=20 until [ $C -lt 10 ]; do echo C $C C=`expr $C - 1`

Vezérlési szerkezetek Case szerkezet: Case word in minta1) parancsok ;; minta2) parancsok ;; esac case $# in 1) echo 1 ;; 2) echo 2 ;; *) echo sok esac

Egyszerű scriptek #!/bin/bash echo Kérlek add meg a neved read NAME echo "Hi $NAME!" tar -cZf /var/my-backup.tgz /home/me/ if test $# -le 5   then echo Az argumentumok szama kisebb vagy egyenlo mint 5.   else echo Az argumentumok szama nagyobb mint 5. fi

Számok összege 1-től a megadottig. #!/bin/bash sum=0 i=1 while [ $i -le $1 ]; do sum=`expr $sum + $i` i=`expr $i + 1` done echo $sum

Milyen nap van ma? #!/bin/bash Mon=hetfo Tue=kedd Wed=szerda Thu=csutortok Fri=pentek Sat=szombat Sun=vasarnap nap=`date +%a` # date +%a csak annyit ír ki, hogy Mon vagy Tue stb. eval echo Ma \$$nap van.

n! kiszámítása ciklussal #!/bin/bash i=$1 # kezdő érték beállítása fac=1 while [ $i -gt 0 ] do fac=`expr $fac \* $i` # kell a per jel a szorzásjel előtt, különben # syntax errort kapunk i=`expr $i - 1` done # eredmény visszaírása echo $fac

Két sztring összehasonlítása #!/bin/bash S1='string' S2='String' if [ $S1!=$S2 ]; then echo "S1('$S1') nem egyenlő S2('$S2')-vel" fi if [ $S1=$S1 ]; then echo "S1('$S1') egyenlő S1('$S1')-vel"

Hány Anna nevû user van összesen és ezek közül hányan nincsenek bejelentkezve? #!/bin/bash x1=`cat /etc/passwd | grep Anna | wc -l` x2=`finger | grep Anna | wc -l` x3=`expr $x1 - $x2` echo $x3

Linkek http://elmfiz.elte.hu/fizinf/OpRendszerek/bash.html http://www.gnu.org/software/bash/bash.html http://www.tldp.org/LDP/abs/html/ http://en.wikipedia.org/wiki/Bash http://elmfiz.elte.hu/fizinf/OpRendszerek/bash.html http://www.inf.u-szeged.hu/~bmse/unix/unix3.html http://progkor.inf.elte.hu/200506.1/unix.html http://home.fazekas.hu/~egmont/unix/shell.html http://www.ibiblio.org/pub/Linux/docs/HOWTO/translations/hu/Bash-Prog-Intro-HOWTO-hu.txt http://shell-script-programing.sync.hu/SHELL_PROGRAMOZAS.htm http://heather.cs.ucdavis.edu/~matloff/UnixAndC/Unix/CShellII.html

Köszönöm a figyelmet!