- UNIX operációs rendszer rövid története és jellemzői
- 1969: Bell Laboratórium (Ken Thompson)
- Dennis M. Ritchie (MULTICS)
- PDP-7
- belső használatra
- hatékony és elegáns rendszer
- főleg szöveges állományok feldolgozására
- első változat assembly
- C nyelven újraírják
- 1974: első publikus változat V6
- publikus forráskód egyetemek részére
- több szálú párhuzamos fejlesztés
- részben inkompatibilis verziók
- szabványosítás (OSF, POSIX)
Irányzat |
Verziók |
Példák |
AT&T System X rendszerek |
System V Release 4.2 |
Sun Solaris, AT&T System V |
Berkley BSD X rendszerek (1992-ig) |
BSD 4.4 |
SunOS, ULTRIX (Alpha), BSD386, FreeBSD |
OSF rendszerek (1991) |
OSF/1 |
DEC Didital UNIX, IBM AIX, HP-UX |
POSIX
(IEEE szabvány) |
|
Linux |
Jellemzők
multiprogramozott környezet
időosztásos ütemezés
virtuális memóriakezelés
többfelhasználós rendszer
alapvető védelmi rendszer
hatékony on-line file rendszer
Előnyök
hatékony hardver kihasználás
integrált hálózati interface (1984, BSD, TCP/IP) (socket)
"hordozható" operációs rendszer
hordozható alkalmazások
könnyen kezelhető programozói interface (API) (rendszerhívások, API)
I/O egységek kezelése a file rendszer interface-en keresztül
hatékony és konfigurálható felhasználói interface (shell)
egyszerű de jól használható segédprogramok, tool-ok
programfejlesztés támogatása: make, verziókontroll programok
Linux
public-domain (szabad) szoftver
1991: Linus Torvalds (kernel, 32 bites 80386)
alapja GNU UNIX
kevés device driver
1994: Linux 1.0
fájlkezelés
socket, TCP/IP
swapping, lapkezelés (paging)
floppy
CD-ROM
1996: Linux 2.0
64 bites Alpha
Motorola 68000
Sun Sparc
TCP/IP fejlesztés
ISDN
szálak kezelése
automatikusan betölthető kernel szálak
Linux felépítése
Réteges felépítés
A Linux rendszer komponensei
Felhasználó |
SHELL |
Segédprogramok
(utility) |
Felhasználói
programok
(folyamatok) |
Alkalmazások (editor, fordító-programok stb.) |
Rendszerkönyvtárak (rendszerhívások) |
Linux kernel |
(betölthető kernel modulok) |
Device driver |
Device driver |
Device driver |
Hardver |
1.ora vege
2.ora eleje
UNIX SHELL
Felhasználói felület: shell (héj).
Nem szerves része az operációs rendszernek (lecserélhető).
Több, különböző funkcionalitású shell létezik.
Főbb jellemzői a következők:
rövid parancsok (például: ls, mv, cp)
hatékony működés: kis erőfeszítéssel (kevés billentyű lenyomásával) viszonylag nagy eredményt lehet elérni
"felhasználói kézikönyv": man parancs
praktikus, jól használható segédprogramok (ún. tool-ok) biztosítása gyakori műveletek elvégzésére (pl. a keresés, összehasonlítás, stb.)
lehetőség a felhasználói felület programozására (batch programok)
- A shell-ek általános tulajdonságai
- A programok, parancsok ún. szabványos csatornákon érintkeznek a külvilággal:
- bemenete (stdin),
- kimenete (stdout), és
- hiba kimenete (stderr).
- A szabványos csatornák átirányíthatók fájlba, ill. hozzáfűzhetők egy létező fájlhoz.
- parancsok/programok összefűzhetők
PIPE (csővezeték) használatával ideiglenes FIFO tárolón keresztül
- speciális karakterek állománynév helyettesítésre (pl. *, ?)
- van lehetőség a
shell programozására és batch programok futtatására
- lehetőség van
parancshelyettesítésre (alias)
- feltételes
programvégrehajtás más, korábbi programok eredményének függvényében
- parancsoknak/programoknak indításkor átadhatók paraméterek
- változók használata
- párhuzamos
programvégrehajtás
- Felhasználók belépése a UNIX rendszerbe
- Többfelhasználós rendszer.
- Szükséges a felhasználók azonosítása.
Rendszer logikai képe
A UNIX lehetővé teszi, hogy egy adott számítógéphez több terminál is kapcsolódjon. (A terminál csak a felhasználóval történő kapcsolattartást intézi: bemenet a billentyűzetről - kimenet a képernyőre.)
PC-s környezetben, ill. munkaállomások esetén általában egy géphez egy "terminál" () kapcsolódik.
Lehetőség van távoli rendszer használatra:
telnet
rlogin
ssh
Password (jelszó)
A password az a titkos információ, ami a felhasználó azonosítására szolgál.
A rendszer kódolt formában tárolja a jelszavakat egy mindenki számára olvasható fájlban (etc/passwd).
A kódolás egyirányú, vagyis a kódolt jelszóból nem lehet a jelszót visszaállítani.
A jelszó megváltoztatása: passwd (root jogon fut).
A root felhasználó is csak törölni tudja a felhasználók jelszavát.
Felhasználói azonosító létrehozása
Egy új felhasználói azonosító létrehozásakor (témaszám vagy account kérésekor) a következő információt kell megadnunk:
az új felhasználó jelszava
új felhasználó home könyvtára (az a könyvtár, ami bejelentkezés után a felhasználó aktuális könyvtára lesz)
új felhasználó által használni kívánt shell (sh, ksh, csh, tcsh)
A fenti adatokat a rendszer az /etc/passwd fájlban tárolja el, ahol mindenki el is olvashatja. A felhasználó fenti attribútumait a home könyvtár kivételével maga a felhasználó is megváltoztathatja
a megfelelő – root jogon futó – parancs futtatásával. (chsh)
A felhasználó belépése után a megadott shell fog elindulni.
Gyakorlat:
- who (kilistázza ki lépett be az általunk használt gépre, milyen terminálon)
- who am i (megmondja milyen user azonosítóval léptem be)
- id (kiírja az aktuálisan használt user ID-t, group ID-t)
chsh (ne változtassunk lehetőleg)
passwd
ls -la /etc/passwd
more /etc/passwd
A UNIX shell parancsai
A UNIX shell parancsok két csoportba oszthatók:
belső vagy beépített parancsok, melyeket maga a shell hajt végre,
külső parancsok, melyek önálló programként vannak megvalósítva végrehajtható fájlok formájában tárolja azokat a rendszer. Ezeknek
A shell által értelmezett speciális karaktersorozatok (a viselkedés lehet rendszerspecifikus):
, kilépés a shellből
CTRL-C: abort
CTRL-Z: stop, leállítja az aktív programot
CTRL-S: suspend, felfüggeszti a futó parancs végrehajtását, újbóli leütésre a parancs végrehajtása tovább fut.
Standard csatornák
input: STDIN, fájl descriptora: 0 (szabványos bemeneti csatorna)
output: STDOUT, fájl descriptora: 1 (szabványos kimeneti csatorna)
error: STDERR, fájl descriptora: 2 (szabványos hiba csatorna)
A UNIX parancsok általános felépítése
parancs [-kapcsolók] [paraméterek] [>out] [<input][2>error]
A kapcsolókat ill. a paramétereket a parancs megkapja,
ő értelmezi.
[>out]
átirányítja a parancs kimenetét az out nevű fájlba.
[<input]
megadásakor a parancs a bemenetét az input nevű fájlból veszi.
[2>error]
hatására a parancs hibaüzenetei az error nevű fájlba kerülnek.
A man parancs
A UNIX rendszerben van egy dokumentációs adatbázis. Olvasni a man parancs segítségével lehet.
A “parancs_név” parancs részletes leírása jelenik meg a képernyőn (szintaxis, paraméterek, opciók, példák, stb.). A
man program lényegében egy speciális formátumban tárolt szöveges adatbázist kezel, ami tartalmazza a parancsok leírását.
Az adatbázis 8 kötetre van osztva. Pl. az egyes kötet az általános parancsok programok leírását, a 2. kötet a rendszerhívások leírását tartalmazza.
- man 1 ls (Van ilyen parancs, ezért megjelenik a help.)
- man 2 ls (Nincs ilyen rendszerhívás, ezért nincs eredmény.)
Keyword (kulcs-szó) szerinti keresés:
- man –k kulcsszó
- Végignézi az összes bejegyzést az adatbázisban, és a fejlécekben megkeresi a kulcsszót. Az adatbázis, terjedelmét tekintve igen jelentős, hipertext jellegű.
Gyakorlat:
man ls (ls parancs help-je.)
man -k list (azok a bejegyzések, ahol a list szó előfordul a fejlécben)
A UNIX FÁJLRENDSZER
UNIX File System (UFS):
UFS jellemzők
Alapegység: fájl.
Könyvtárak szerkezete: fa (irányított körmentes gráf).
Linkek (kapcsolatok) létrehozásának lehetősége.
UFS felhasználói felület jellemzői
A fájlok elérése: /út/fájlnév.
Egyetlen gyökérkönyvtár ("/").
Fájlrendszerek összekapcsolása (mount).
Egy fájlra több névvel is hivatkozhatunk (link).
A UNIX fájlrendszerben használat adatszerkezetek
i-node(index node)
Egy fájlrendszerben a fájlok azonosítására szolgáló adatszerkezet.
Könyvtár leírás egy táblázat, nevek és i-node számok összerendelése:
Példa a "." nevű file tartalmára:
i-node-szám (2bájt) |
fájl neve (14 bájt) |
6 |
. |
5388 |
.. |
45 |
adat.dat |
677 |
.titok.titkos |
|
|
i-node
Az i-node tartalma:
Fájl típusa, ami a következők egyike lehet
speciális (I/O),
adatállomány,
könyvtár (katalógus) bejegyzés,
PIPE/FIFO.
Az adott i-node-ra mutató linkek száma.
Eszköz ID.
i-node-száma (azonosítója, ID-je).
UID, GID (a fájl tulajdonosának felhasználói és csoportazonosítója).
A UNIX védelmi rendszere használja.
Időpontok
utolsó elérés,
utolsó módosítás,
attribútumok módosítása.
Mód flag-ek.
A fájl elérési jogai
A fájlhoz tartozó adatblokkok elérési információja.
Fájl létrehozásakor a fájl a létrehozó felhasználó hatásos user-ID-jét és group-ID-jét örökli.
Fájl tulajdonosának ill. attribútumainak megváltoztatása:
- chown
tulajdonos megváltoztatása
- chmod
attribútumok módosítása
- Könyvtárkezelő parancsok
Az aktuális könyvtár fájljainak listázása: ls.
A könyvtárban levő fájlok neve is egy fájlban, melynek a neve "." van eltárolva. A szülő könyvtárra való hivatkozás "..". (A ".." egy hard link!)
Gyakorlat:
A könyvtárleíró fájl kilistázható a cat . vagy a od -An -Xc . parancsokkal. (A more nem írja ki, mert könyvtár.)
Kilistázza a megadott (vagy paraméter nélkül használva az aktuális) könyvtár tartalmát. A rejtett fájlokat nem írja ki. A rejtett fájlok neve "."-tal kezdődik.
Az ls kapcsolói:
- ls -l
: kilistázza a fájlokhoz tartozó összes információt (long)
- ls -a
: a hidden fájlokat is kilistázza (all)
- ls -la
: a fenti opciók összevonása: minden fájl, hosszú megjelenítés
Fájlok, könyvtárak másolása:
- cp régi új
(régit az újba)
Fájlok törlése: (-i kapcsolóval meger
ősítést kér.)
rm fájl_név
Könyvtárak törlése:
Új fájlok alapértelmezett (védelmi) paramétereinek megadása:
- umask mód
- umask
- umask 0
- echo "valamimi" > 1file
- umask 22
- echo "semmi" > 2flle
- ls -la [?file]
- (Az attributumai különböznek a két file-nak! )
- (Állítsuk vissza az umask értékét az eredeti értékre!)
Fájlok (védelmi) paramétereinek megváltoztatása:
- chmod mód fájl_né
v
- chmod u+rwx 1file
Fájlok tulajdonosának magváltoztatása:
- chown új_tulajdonos fájl_né
v
- A UNIX fájlrendszer felhasználói interfésze
A UNIX fájlrendszer felhasználói felületének lehetőségei:
standard input/output átirányítás;
mount: két fájlrendszer logikai összefűzése;
linkek létrehozása:
- hard link,
- szimbolikus link;
Hard link
Egy fájl különböző nevekkel történő elérés
e.
ln /home/users/usr1/file /home/users/usr2/hardlink
/home/users/usr1 |
|
/home/users/usr2 |
43 |
. |
|
67 |
. |
23 |
.. |
|
88 |
.. |
92 |
file |
|
59 |
adat.dat |
91 |
titok.mese |
|
92 |
hardlink |
|
|
|
|
|
|
|
|
|
|
Hátrány:
- Felhasználó elvesztheti a felügyeletet a fájljai felett.
- Szimbolikus link
Hard link hibáinak kiküszöbölése. (4.2 BSD)
ln -s /home/users/usr1/file /home/users/usr2/szimb_link
/home/users/usr1 |
|
/home/users/usr2 |
43 |
. |
|
67 |
. |
23 |
.. |
|
88 |
.. |
92 |
file |
|
59 |
adat.dat |
91 |
titok.mese |
|
- |
szimb_link: /home/users/usr1 |
|
|
|
|
|
|
|
|
|
Gyakorlat
cd
echo "semmi" >file
ln -s file szimb_link
ln file hardlink
ls -la
more szimb_link
more hardlink
rm file
ls -la
more szimb_link
more hardlink
echo "valami" >file
more szimb_link
more hardlink
- Keresés
find ut_lista –kifejezés
- pl.:find /users/ -name text.txt -print
Kifejezés:
- -name file_name
- -print (mindig igaz, hátasára kiíródik a megtalált file)
- -type [b, c, d, f, p, l, s]
b blokkos kezelésű speciális állomány
c karakteres speciális állomány
d directory
f file
p pipe
l szimbolikus link
s socket
-user user_name
-perm jog (a file hozzáférési jogosultságát vizsgálja)
-size hossz (állomány hossza hossz)
-atime access time
-mtime modification time
-exec program
-ok program
-ls (-exec ls –gilds {})
- Pipe (csatorna)
A pipe
(csatorna, csővezeték) tulajdonságai:
FIFO tároló,
automatikus szinkronizáció,
mérete korlátos, hossza 10 Kbájt,
megvalósítás: fájl rendszerben.
Lehetőséget ad parancsok egymás után fűzésére:
- Az összefűzött parancsok a sorban előttük álló parancs kimenetét dolgozzák fel.
- Az egyik program ír, a másik pedig olvas belőle.
A két program végrehajtását a PIPE szinkronizálja, üres PIPE olvasásakor, ill. teli PIPE írásakor az utasítást végrehajtó programot a rendszer várakoztatja.
Különbség a UNIX és a DOS között:
- A DOS ideiglenes (temporary
) fájlt hoz létre az egyes összefűzött programok kimenetének tárolására. Sorban egymás után hajtja végre az összefűzött parancsokat.
A UNIX esetén az összefűzött programok párhuzamosan hajtódnak végre, a PIPE csak szinkronizálja azokat.
(Hosszú parancsok végrehajtásánál sokáig kell várni az eredmény megjelenésére DOS esetén.)
A PIPE használatának szintaxisa a következő:
parancs1 | parancs2 | parancs3
Parancsok összefűzése esetén gyakran használt programok:
sort
Bemenet soronkénti rendezése megadott kritérium alapján.
Minta keresése a bemeneti adatok között.
A szöveges bemenet sorainak, szavainak, ill. betűinek m
egszámlálása.
- more: Oldalanként tördeli a kimenetet.
Gyakorlat
- cd [$HOME]
- cd ..
- du (kiírja a könyvtárak által aktuálisan foglalt lemezterületet)
- du | more (tördelve, q leütésével ki lehet lépni)
- cd [$HOME]
- du | wc (leszámolja a sorokat, hány könyvtárunk van)
- ls -la | grep file (kinyomtatja azokat a fájlokat, melyek nevében van file)
- Hasznos parancsok
- Futási idő mérése
- time parancs
elindítja a parancsot, és leméri a futási idejét.
Gyakorlat
- Levélküldés
Példaként vegyük a következő parancsot:
mail
hal@kabinet.szif.hu <msg
A parancs hatására a rendszer elküldi az msg nevű fájlban tárolt üzenetet a megadott címre. Átirányítás nélküli hívásnál az üzenetet be lehet gépelni. Ctrl-D-vel lehet az üzenetet befejezni, és elküldeni a levelet.
- Üzenetküldés
- write user
Üzenet írása a rendszerbe belépett másik felhasználónak.
Gyakorlat
- write hal1
Semmi baj!
crtl-d (Üzenet zárása crtl-d-vel.)
- mesg y (Üzenet fogadás engedélyezése.)
- mesg n (Üzenet fogadás tiltása.)
- FOLYAMATOK A UNIX-BAN
UNIX: multiprogramozott operációs rendszer:
- Párhuzamosan több program fut.
Operációs rendszer feladatai:
- Rendszer felügyelet, vezérlés.
- Saját maga és a folyamatok védelme.
- E
rőforrások elosztása: CPU, memória, fájlok, I/O eszközök.
Folyamat:
Absztrakt fogalom.
Gyakorlati kép:
végrehajtás alatt álló program egy példánya.
Folyamat virtuálisan egyedül fut a rendelkezésre álló hardveren.
Hardver erőforrások elérése:
operációs rendszeren keresztül.
CPU elosztás:
- Átkapcsol az egyes "programok" között: virtuális párhuzamos futás.
Memória elosztás:
- Virtuális memóriakezelés: minden program számára külön címtartomány.
- Operációs rendszer: logikai-fizika memóriacímek megfeleltetés.
Fájlok, I/O eszközök:
- Szinkronizáció (kölcsönös kizárás).
Párhuzamos működés:
Egy program vagy felhasználó több folyamatot indít.
Felhasználói felület:
- Több shell-t indítunk egyazon gépen:
minden program használja a ki- és bemenetét.
- "Háttérben", leválasztva indítjuk a programot:
nem használhatja a standard ki és bemeneteit.
Gyakorlat: ps, ps -aux, ps -elf, id, who
(99/11/25)
SIGNAL (99/12/02)
A signal (jelzés) események kezelésére.
- Háttérben futó programok kezelése.
- Folyamatok kapcsolattartása.
Aszinkron és szinkron külső események kezelése.
Signal esetén megadott függvény vagy beépített funkció meghívása.
Konstansként definiált eseményazonosítók: SIGINT, SIGKILL, SIGSTOP.
Események kezelése
Beépített (rendszer által megvalósított) funkciók:
A folyamat befejeződik (kilép), és generál egy ú
n. core fájlt, ami tartalmazza a folyamat memóriaképét kilépéskor. Ezt elemezve esetleg meghatározhatjuk, hogy mi okozta a leállást.
Kilép core fájl generálása nélkül.
Elveti az eseményt, nem veszi figyelembe. (Nem minden signal esetén lehetséges.)
Felfüggeszti a folyamat futását.
Folytatja a folyamat futását.
A felhasználó által definiált működés leírása a következőképpen történik:
- Függvény, amelyben a felhasználó definiálja a kívánt működést.
A signal (SIGNUM, handler) rendszerhívással megadja, hogy a “handler” rutin hajtódjon végre a SIGNUM számú signal érkezésekor.
Gyakorlat:
- ps
- kill PID
- kill -9 PID
- Kilépés: operációs rendszer HAGUP signal-t küld.
- nuhup parancs (HAGUP signal ignorálása)
A UNIX védelmi rendszere
Célja az illetéktelen hozzáférés megakadályozása:
- az egyes felhasználók adataihoz
- az operációs rendszer adataihoz
erőforrásokhoz.
Jogosítványokon
keresztül valósul meg.
- A UNIX védelmi rendszerének működése
Minden felhasználónak van egy azonosítója (UID).
A jogosítványok könnyebb kezeléséhez:
- csoport
(group) ID is (továbbiakban GID).
User ID és csoportba tartozás tárolása:
- /etc/passwd: user név - UID
, elsődleges GUID
/etc/group: csoportba tartozás
Fájl i-node:
- fájl tulajdonosának jogosultságai,
- fájl tulajdonosának csoportja jogosultságai,
- az összes többi felhasználó jogosultságai.
Jogok értelmezése:
- típus, jogosultságok pl.:
-rwxr-sr- - 56 hal22 hal 230 Dec 1 12:01 kerdez
lrwxrwxrxw 1 hal22 hal 7 Dec 2 12:34 slink -> kerdez
drwxr-xr-x 27 root root 1024 Nov 30 09:51 ..
- jogosultságok értelmezése fájl esetén:
- r: olvasható
- w: írható
- x: végrehajtható (Ténylegesen: magic number, batch file - shell)
- s: végrehajtható a fájl tulajdonosának jogosultságaival
- jogosultságok értelmezése könyvtár esetén:
- r: olvasható (kilistázható ls-sel a tartalma, de semmi más nem)
- w: törölhető/létrehozható új fájl
- x: kereshetünk a könyvtárban, végrehajthatjuk és írhatjuk a könyvtárban levő fájlokat a fájlok jogosultságai szerint
- típus [b, c, d, f, p, l, s]
- b blokkos kezelésű speciális állomány
- c karakteres speciális állomány
- d directory
- f file
- p pipe
- l szimbolikus link
- s socket
- Jogosultságok átruházása
Lehetőség van a jogosultságok átadására egy meghatározott tevékenység végrehajtása idejére. Tevékenység = program.
Megvalósítás:
Egy futó processznek két azonosítója, ID-je van:
- hatásos UID (ill. GID):
a védelmi rendszer fájlhozzáféréskor/eléréskor használja.
- valós UID (GID):
signal-ok kezelésekor vizsgálja a védelmi rendszer.
Processz elindul (alapeset):
- elindító felhasználó
jogaival fog rendelkezni, megkapja folyamatot elindító felhasználó UID-ját.
- hatásos és valós UID megegyezik.
Hatásos UID megváltoztatása:
- Fájl-leíró: "suid" bit = 1,
- létrejövő processz a fájl
tulajdonosának jogait (UID) kapja meg.
Megjegyzés:
Kitüntetett felhasználó, a root , super user (UID=0), aki minden jogosultsággal rendelkezik. A root számára minden fájl elérhető.
Gyakorlat:
ls -la
passwd
chmod u+s file
sleep 111
ps
- Állománynév helyettesítés
Parancsfeldolgozás során a shell a paraméterként megadott (fájl-névként értelmezett) speciális karaktereket behelyettesíti:
0 vagy tetszőleges hosszúságú karakterlánc
? pontosan egy karakter
[abc] az a, b, c karakterek közül egy
[i-n] az i-től az n-ig terjedő karakter tartományból egy
kombinálhatóak a fenti jelek: [a-z]* kisbetűvel kezdődő fájl
Gyakorlat:
- cd /home/susu
- ls -la hal2?
- ls -la [a-z]*
- ls ????
- ls ?*
Parancs helyettesítés
Parancsfeldolgozás során a shell a ` közé zárt parancsokat végrehajtja és a parancs eredményét (kimenetét) beilleszti a parancssorba:
- parancs1 `parancs2`
- parancs1 parancs2_kimenete
- pl.: more `grep -l cica *.txt`
Gyakorlat:
- ls -la `ls -1 | egrep [^hal2]`
Parancs sorozatok
Parancsok egymás utáni feltétel nélküli vagy feltételes végrehajtása:
- parancs sorozat:
parancs1; parancs2
- kilépési (exit) státusz
0: OK
nem 0 : hiba
- vagy
: parancs1 || parancs2
grep Hungary states || grep USA states
- és:
parancs1 && parancs2
grep Hungary states && grep USA states (99/12/02)
Reguláris kifejezések
Parancsfeldolgozás során a shell néhány parancsa (egrep, sed, awk, perl ) a paraméterként megadott karakterláncot speciális karaktereként értelmezi:
- k
a k karakter
- \k
nem a k karakter
- *
0 vagy tetszőleges hosszúságú karakterlánc
? pontosan egy karakter
[abc] az a, b, c karakterek közül egy
[i-n] az i-től az n-ig terjedő karakter tartományból egy
^ sor eleje
$ sor vége
r* az r reguláris kifejezés 0 vagy tetszőleges számszor
SHELL programozás
Változók:
- shell változók: shell használja
- környezeti változók: minden program eléri
Változók definiálása: (shell specifikus)
- shell változók: változónév=érték (set változónév érték)
- környezeti változók: export változónév (setenv változónév érték)
Változók használata:
- feltétel:
test $változó = konstans
test $változó1 -eq $változó2
- kifejezés kiértékelése:
expr $numerikus_változó1 + $numerikus_változó2
(változó = `expr $numerikus_változó1 + $numerikus_változó2`)
Vezérlés utasítás: (Gyakorlat: UNIX könyv 59-61 o.)
Ciklus utasítások: (Gyakorlat: UNIX könyv 59-61 o.)
Batch példa programok
Fibonacci szám
#!/bin/sh
if test $# -ne 0
then
echo "En nem kerek parametert!"
exit
else
echo "Az elso 20 Fibonacci szam:"
fi
fib_a=1
fib_b=1
i=1
echo $fib_a
echo $fib_b
while [ $i -le 18 ]
do
tmp=$fib_b
fib_b=`expr $fib_a + $fib_b`
fib_a=$tmp
echo $fib_b
i=`expr $i + 1`
done
Rejtett fájlok adatainak kiírása
#!/bin/sh
if test $# -ne 0
then
echo "En nem kerek parametert!"
exit
else
echo "Az aktualis konyvtarban levo rejtett fajlok:"
fi
for i in `ls -da .*`
do
ls -ld $i
done
Feladatok:
http://www.mit.bme.hu/~kiss/edu/UnixLab/Tests/
for i in kacsa kuka labda
do
echo "En szeretem a ${i}t…"
done