bevezetés a linux operációs rendszer alapjaiba
TRANSCRIPT
Áramkörtervezés az absztrakciótól a realizációig BMEVIEEM371
Budapesti M¶szaki és Gazdaságtudományi Egyetem
Bevezetés a Linux operációs rendszer alapjaiba
Nagy Gergely, Dr. Timár András
Elektronikus Eszközök Tanszéke (BME)
2014. november 6.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 1 / 37
A Linux története
A Linux története
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 2 / 37
A Linux története A UNIX
A UNIX
A UNIX operációs rendszert az AT&T vállalat Bell laboratóriumá-ban készítette el Ken Thompson és Brian Kernighan 1969-ben.
Az els® operációs rendszer volt, amit nem egy konkrét gép as-sembly nyelvén fejlesztették, hanem egy magas szint¶ nyelven, ígylehet®vé vált a rendszer egyszer¶ portolása más architektúrákra.
A felhasznált magas szint¶ nyelv a C nyelv volt és ehhez a projekthezhozta létre Dennis Ritchie.
Thompson és Ritchie Brian Kernighan
A trösztellenes törvényértelmében az AT&Tnem forgalmazhatottszoftvereket, ezért anyelvet és az operációsrendszert ingyenessétették.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 3 / 37
A Linux története A GNU-mozgalom
A GNU-mozgalom
Amikor az AT&T-t felosztották kisebb vállalatokra, azok már értéke-síthettek szoftvert és így zárttá tették a UNIX-ot.
Richard Matthew Stallman (rms) a GNU-kiáltványban (GNU is
Not Unix) 1983-ban meghirdetett egy szabad szoftver mozgalmat ésennek keretében megalakult a Free Software Foundation (FSF) éselkezdték kifejleszteni egy ingyenes környezet programcsomagjait.
Richard Stallman
Ehhez tartozik például az egyiklegelterjedtebb fordítóprogram-csomag: a GCC (GNU Com-piler Collection).
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 4 / 37
A Linux története A Linux születése
A Linux születése
A GNU-mozgalom nagyon sok ingyenes programot készített el, de ma-gát az operációs rendszermagot (kernel) nem sikerült befejezni.
1991-ben Linus Torvalds a helsinki egyetem diákjaként készített elegy UNIX-klónt az IBM 386-os gépére és ezt megosztotta az interne-ten, bár nem gondolta, hogy bárkit is érdekelne.
Linus Torvalds
A nevet barátja, Ari Lemmke adta, így nevezteel Linus FTP könyvtárát.
A Linux tulajdonképpen magát a kernelt ésegy sor, ahhoz közeli (részben FSF-fejlesztés¶)programot jelent.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 5 / 37
A Linux felépítése
A Linux felépítése
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 6 / 37
A Linux felépítése A Linux kernel
A Linux kernel
A Linux monolitikus kernellel rendelkezik, amelynek feladatai:
folyamatkezelés (process),fájlrendszer kezelése,perifériák elérése,hálózatkezelés.
Az eszközkezel®k (device driver) beépülhetnek a kernelbe, de modulá-risan is kapcsolódhatnak ahhoz.
A kernel számozásának alakja: A.B.C(.D):
A: f®verzió � kernel versionB: f® átdolgozás � major revisionC: kisebb átdolgozás � minor revisionD: hibajavítás, biztonsági frissítés � bug-�xes, security patches
A kernelt Linus felügyeletével folyamatosan fejlesztik � 2014. augusz-tusában a legfrisebb verzió: 3.16 (kibocsátás: 2014. 08. 03.)
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 7 / 37
A Linux felépítése A kernel feletti komponensek
A kernel feletti komponensek
A kernel fölött számos alacsony szint¶ komponens fut, amelyek arendszer legalapvet®bb funkcióit látják el:
bootloader: az els® program, ami a gép bekapcsolásakor betölt®dik,ez végzi a kernel betöltését a memóriába (pl. GRUB, LILO),init: a legels® folyamat (process), amit a kernel indít el � ® indítja arendszer szolgáltatásait és minden további folyamat rajta keresztülindul el,dinamikus könyvtárak: a Linux lehet®séget ad dinamikusan csatoltkönyvtárak használatára (SO � shared object), amelyek formátuma:ELF (Executable and Linkable Format),különböz® felhasználói felületek: léteznek szöveges és gra�kus felü-letek is.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 8 / 37
A Linux felépítése Az X11
Az X11
A Linuxokon használt gra�kus felületek alapja az X Window Sys-tem, amelyet röviden, a jelenlegi verziószám alapján X11-nek is hív-nak.
A rendszert 1984-ben az MIT-n kezdték el fejleszteni.
Számítógép-hálózatokon m¶ködtetett, távoli gra�kus felületeklétrehozását biztosítja architektúra-független módon.
Alacsony szint¶ hálózati protokollja segítségével egy keretrendszertbiztosít gra�kus programok létrehozására.
A GNOME Shell 3.2
Manapság általában az X-reépül®, komplexebb gra�-kus könyvtárakat (DesktopEnvironment) használnak(GNOME, KDE, XFCE, stb).
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 9 / 37
A Linux felépítése A csomagkezel®k
A csomagkezel®k I.
A Linuxokra elérhet® programok kezelésének egy központosított módjaa csomagkezel® (package manager) használata.
Egy csomagkezel®:
képes egy program függ®ségeit (a futtatáshoz szükséges könyvtárak,egyéb programok) nyilvántartani,elvégzi egy program telepítését az azt tartalmazó csomagból,képes a hiányzó függ®ségek automatikus telepítésére vagy az azokattartalmazó csomagok listázására,automatikusan kezeli a csomagok frissítéseit,képes a rendszer karbantartására � pl. nem használt, elavult csomagokeltávolítására.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 10 / 37
A Linux felépítése A csomagkezel®k
A csomagkezel®k II.
A csomagkezel®k az interneten szabadon hozzáférhet® adatbázi-sok segítségével dolgoznak.
Segítségükkel egy program telepítése egy parancs kiadását jelenti(gra�kus felületen egy klikkelés).
Pl.
sudo apt-get install build-essential
feltelepít egy sor fejleszt®-programot (pl. a GCC C++ fordítóját).
A csomagkezel®k el®nyei:
nem kell egy program telepítésekor a függ®ségeket �kézzel� megkeresniés telepíteni,automatikus, egységes és biztonságos frissítési mechanizmust biztosíta-nak,a feltelepített csomagok listája elmentésével egyszer¶en és automatiku-san reprodukálható egy m¶köd® rendszer.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 11 / 37
A Linux felépítése A csomagkezel®k
A csomagkezel®k III.
Sokféle csomagkezel®-rendszer létezik:
dpkg: Debian Package Management System,RPM: eredetileg Red Hat Package Manager (ma: RPM Package Ma-nager),Pacman: az ArchLinux része.stb.
Léteznek olyan segédprogramok, amelyek ezeknek a csomagkezel®kneka használatát egyszer¶sítik le, kényelmes felhasználói felületet advaa csomagok kezeléséhez. Ilyen a dpkg-alapú apt, vagy az RPM-enalapuló YUM és zypper.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 12 / 37
A Linux felépítése A disztribúciók
A disztribúciók
Sok cég állít össze teljes felhasználói élményt adó ún. disztribúciókat(distribution), amelyek általános felépítése a következ®:
friss Linux kernel,GNU programok,ablakozó környezet(ek) (GNOME, KDE, stb.),egyéb ingyenes programok,csomagkezel®.
Néhány híresebb disztribúció:
Ubuntu,Suse,Debian,Red Hat,Fedora,CentOS,Gentoo,UHU-linux (magyar).
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 13 / 37
A Linux m¶ködése és használata
A Linux m¶ködése és használata
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 14 / 37
A Linux m¶ködése és használata Elérési út
Elérési út I.
A teljes fájl-szerkezet egy fa.
Nincsenek meghajtók, mint Windowsban � a �zikai meghajtók a fábavannak �felcsatolva� (mount).
A fa gyökere a gyökérkönyvtár, amelynek neve: /.
A könyvtárak egymástól is a / jellel vannak elválasztva � pl.
/usr/include/c++/4.6.3/
Abszolút elérési útvonal: / jellel kezd®dik, tehát a gyökért®l elin-dulva megadja egy könyvtár/fájl teljes elérését.
Relatív elérési útvonal: az aktuális könyvtártól kiindulva adja megaz elérést (nem kezd®dhet / jellel).
Fontos: a Linuxok mindenhol megkülönböztetik a kis- és nagybet¶ket!
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 15 / 37
A Linux m¶ködése és használata Elérési út
Elérési út II.
A relatív elérési útak megadásában segít két speciális �könyvtárnév�:
.: a mindenkori aktuális könyvtárra hivatkozik,
..: az aktuális könyvtár �szül®jére� hivatkozik.
Pl.
./amoba
az aktuális könyvtárban lév® amoba nev¶ fájlra/könyvtárra hivatkozik.
A
../obj/utils/string.o
a szül®könyvtárban lév® obj könyvtáron belüli utils könyvtárbanlév® string.o fájlra hivatkozik.
Az aktuális könyvtárra való hivatkozás általában elhagyható, tehát a ./-relkezd®d® útvonalnevek e két karakter nélkül is ugyanazt jelentik � kivéve prog-ramok futtatásakor (ld. kés®bb).
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 16 / 37
A Linux m¶ködése és használata Elérési út
Elérési út III.
Amikor a parancssorban egy elérési útvonalat adunk meg (pl. egy pa-rancs argumentumaként), akkor ha néhány bet¶ beírása után meg-nyomjuk a TAB billenty¶t, a környezet megpróbálja befejezni a ne-vet:
ha ez csak egyféleképp tehet® meg, akkor megteszi,ha több lehet®ség is van, akkor kiírja ezeket majd folytathatjuk a gépe-lést.
Pl. ha a könyvtárunk tartalmaz egy abc.txt és egy ablak.doc nev¶fájlt, akkor
a ./ab útvonalrészlet után TAB-ot nyomva kiíródik a fenti két fájlneve és folytathatjuk a gépelést,a ./abl után TAB-ot nyomva a környezet kiegészíti az útvonalat./ablak.doc-ra.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 17 / 37
A Linux m¶ködése és használata Hozzáférési jogok
Hozzáférési jogok I.
A Linux többfelhasználós rendszer, így kritikus, hogy az egyes fájlok-hoz való hozzáférés szabályozott módon történjen.
Egy fájllal végezhet® m¶veletek:
olvasás (r),írás (w),futtatás (x).
Az egyes m¶veletkhez való jog aszerint de�niált, hogy �mennyire ál-lunk közel a fájlhoz� � a Linux három csoportba osztja a felhasználó-kat az egyes fájlokhoz való hozzáférés szerint:
tulajdonos (u),tulajdonoscsoport (g),más (o).
A tulajdonoscsoportok létrehozása leegyszer¶síti a felhasználók és anekik adott jogosultságok admininsztrálását egy nagy rendszerben.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 18 / 37
A Linux m¶ködése és használata Hozzáférési jogok
Hozzáférési jogok II.
A fájlok esetén egyértelm¶, hogy a fenti három m¶velet mit jelent.
Könyvtárak esetén a hozzáférési jogok:
olvasás: a benne található állományok listázása,írás: fájlok létrehozása, létez® fájlok törlése,futtatás: a könyvtárba való belépés (munkakönyvtárrá tétel).
Ha például egy könyvtárra van írási jogunk, de nincs olvasási, akkorlétrehozhatunk ott fájlokat, vagy törölhetünk a már létez®k közülanélkül, hogy ki tudnánk listázni a könyvtár tartalmát.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 19 / 37
A Linux m¶ködése és használata Hozzáférési jogok
Hozzáférési jogok III.
Egy fájl teljes hozzáférési táblázata egy kilencbites érték, ami a követ-kez®képpen alakul ki:
u g o
r w x r w x r w x
0 1 2 3 4 5 6 7 8
22 21 20 22 21 20 22 21 20
Egy hárombites szám pontosan egy oktális számjeggyel írható le �így három oktális számjeggyel szokták jellemezni a hozzáférésijogokat.Pl. a 764 azt jelenti, hogy
a tulajdonos olvashat, írhat, futtathat,a tulajdonoscsoport többi tagjai olvashatnak, írhatnak, de nem futtat-hatnak,a többi felhasználó pedig csak olvashat.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 20 / 37
A Linux m¶ködése és használata Hozzáférési jogok
Hozzáférési jogok IV.
A hozzáférési jogokat a chmod paranccsal tudjuk megváltoztatni.
Pl.
chmod 731 valami.sh
hatására a valami.sh futtatási jogai a 731 oktális számmal kódoltértékre változnak.
A chmod parancsnak van egy sokkal olvashatóbb, inkrementálisverziója is, ahol jogokat tudunk hozzáadni, illetve elvenni az egyescsoportok és jogok bet¶jelei segítségével:
chmod u+x valami.sh
A fenti utasítással a valami.sh futtatását engedélyezzük a tulajdono-sának, míg a
chmod g-rw valami.sh
utasítással a tulajdonoscsoporttól elvettük az olvasási és írási jogokat.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 21 / 37
A Linux m¶ködése és használata Hozzáférési jogok
Hozzáférési jogok V.
A chmod további alakjai:
minden adat megadása felhasználócsoportonként:
chmod u+r-w-x,g+r+w-x,o-r+w-x valami.sh
összes felhasználó jogainak megadása egyszerre:
chmod +x valami.sh
egy felhasználó jogainak megadása abszolút módon (nem inkre-mentálisan):
chmod u=rw valami.sh
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 22 / 37
A Linux m¶ködése és használata Felhasználók azonosítása
Felhasználók azonosítása
A Linuxokon a felhasználókat egy felhasználónév és egy jelszó azo-nosítja.
A jelszó a passwd utasítással változtatható meg.
Minden felhasználónak van egy saját könyvtára (home), ahol a sze-mélyes dokumentumai találhatóak.
A felhasználói könyvtárak elérési útjai:
/home/timi/
/home/jozsi/
ahol timi és jozsi felhasználónevek.
A felhasználó saját könyvtárának van rövid neve: ∼, míg egy másikfelhasználó �home-jára� így hivatkozhatunk: ∼jozsi.
Tehát pl. a
~/Music/listen.pls
a saját home könyvtárunkon belül lév® Music könyvtárban lév®listen.pls fájl elérési útvonala.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 23 / 37
A Linux m¶ködése és használata A �szuper felhasználók�
A �szuper felhasználók�
A felhasználók között megkülönböztetett szerepe van az adminiszt-rátoroknak, akik a rendszer telepítését és karbantartását végzik.
Csak nekik van joguk:a rendszer m¶ködését érint® beállítások módosításához,a rendszer bels® leírófájljainak írásához,programok telepítéséhez,felhasználók adatainak kezeléséhez.
Az adminisztrátor neve super user vagy root.
Bizonyos normál felhasználóknak is lehetnek adminisztrátor ki-váltságai � ilyenkor a parancsok elé oda kell írni, hogy sudo (superuser do):
sudo apt-get install build-essential
majd meg kell adniuk a jelszavukat.
Linux alatt egy programnak ugyanazok a jogosultságai, mint an-nak a felhasználónak, aki indította ®ket.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 24 / 37
A Linux m¶ködése és használata M¶veletek könyvtárakkal
M¶veletek könyvtárakkal
Aktuális könyvtár elérési útvonala: pwd (present working direc-tory).
Könyvtárváltás: cd ~/Music/mp3
Könyvtár létrehozása: mkdir src
Könyvtár törlése: rm src (csak üres könyvtár törölhet®).
Könyvtár tartalmának listázása:Egyszer¶ lista: ls (vagy l)Részletes lista (típus, hozzáférési jogok, tulajdonos, létrehozási id®, ...):ls -l (vagy ll)Titkos fájlok (nevük .-tal kezd®dik) mutatása: ls -a (vagy la)Bizonyos fájlok listázása: ls *.mp3
A listázás sz¶kítése az ún. szabályos kifejezésekkel (?,*) történik. Ezek segít-ségével különböz® operátorok felhasználásával általános adhatóak meg karak-terminták, amiknek megfelel® fájlnevek kerülnek listázásra. Ennek részleteivelitt nem foglalkozunk.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 25 / 37
A Linux m¶ködése és használata M¶veletek fájlokkal
M¶veletek fájlokkal
Fájl létrehozása: touch fajl (létez® fájl esetén a legutóbbi hozzá-férés ideje (timestamp) frissül.
Fájl törlése: rm fajl
Fájl tartalmának kiírása: cat fajl
Hosszú fájl olvasása: less fajl
A fájlt tartalmát oldalakra törve nézegethetjük.Az oldalak közt pl. Up-Dn, PgUp-PgDn segítségével mozoghatunk.Kilépni a q paranccsal lehet.Keresni el®refelé a /keresett szöveg kifejezéssel lehet és az n-nellehet továbbkerestetni.Ugyanez visszafelé a ?keresett szöveg kifejezéssel történik.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 26 / 37
A Linux m¶ködése és használata Programok futtatása
Programok futtatása
Ahhoz, hogy futtatni tudjunk egy fájlt, szükséges, hogy legyen futta-tási jogunk rá.
Ha beírjuk egy program nevét, akkor a Linux a $PATH nev¶ környezetiváltozóban felsorolt útvonalakon keresi a programot, amelynek alapér-telmezett tartalma pl.
/usr/local/sbin:/usr/local/bin:/usr/bin:/bin
ahol az egyes elérési utak kett®sponttal vannak elválasztva.
Az aktuális könyvtár nincs benne ebben a felsorolásban, ezért ha azaktuális könyvtárban található programot akarjuk futtatni, ak-kor teljes elérési útvonallal kell megadni a nevet:
/home/nagger/bin/amoba
Természetesen használhatjuk a rövid neveket, ezért ha a/home/nagger/bin könyvtárban vagyunk, akkor az itt található amoba
programot így is futtathatjuk:
./amoba
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 27 / 37
A Linux programozása
A Linux programozása
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 28 / 37
A Linux programozása Az I/O átirányítása
Az I/O átirányítása I.
A programok a bemenetüket alapértelmezetten a billenty¶zetr®lkapják, a kimenetük pedig a képerny®.
Megtehetjük azt, hogy a kimenet a képerny® helyett egy fájl le-gyen:
ls > lista.txt
Ez a fájl létrejön, ha nem létezett és a tartalma felülíródik, ha már létezik.
Fordítva is m¶ködik: a bemenet a billenty¶zet helyett egy fájl:
cat < szoveg.txt
A cat paraméterek nélkül indítva az alapértelmezett bemeneten érkez®karaktereket írja ki az alapértelmezett kimenetre.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 29 / 37
A Linux programozása Az I/O átirányítása
Az I/O átirányítása II.
Programok összeköthet®ek oly módon, hogy az egyik kimenete amásik bemenete legyen.
Ehhez az ún. cs®vezeték (pipe) karaktert használjuk: |
ls | grep ab
A grep parancs a bemenetén értkez® sorok közül azokat írja ki, amelyekbenmegtalálja a paraméterként kapott szövegmintát.
Tetsz®legesen hosszú cs®vezeték kialakítható, tehát akármennyi prog-ramot összekapcsolhatunk egymás után.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 30 / 37
A Linux programozása A bash fájlok
A bash fájlok
Ha ugyanazt a parancs-sorozatot sokszor kell kiadnunk, felmerül azötlet, hogy írjuk egy fájlba és azt a rendszer automatikusan hajtsavégre.
Ez a Linuxokon használt legelterjedtebb parancs-környezetben, aBourne Again Shell (BASH) alatt a következ®képpen történik:
#!/bin/bash
ls | grep ab
Az els® sor kötelez®en: #!/bin/bashAz els® két karakter (nevük: hash bang) azt mondja meg a futtató környe-zetnek, hogy egy szkriptfájlról van szó, az utánuk következ® elérési útvonalpedig annak a programnak a neve, ami képes értelmezni a fájl tartalmát.
Ezt követ®en tetsz®leges UNIX programot futtathatunk, illetveléteznek vezérlési szerkezetek is.
Ahhoz, hogy futtatni is tudjunk egy ilyen fájlt, rendelkeznünk kell fut-tatási jogokkal.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 31 / 37
A Linux programozása Változók
Változók I.
Bevezethetünk változókat egy értékadás segítségével:
felirat=" Menu: "
szoveg=nincsszokoz
Fontos, hogy az értékadás operátorának két oldalára nem kerülhet szóköz!
Amikor változók értékére hivatkozunk, a nevük elé egy $ jelet kellírni:
echo $szoveg
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 32 / 37
A Linux programozása Változók
Változók II.
Az echo utasítás segítségével tetsz®leges szöveget kiírathatunk ésa változókat ezekbe is behelyezhetjük:
echo "Helló világ: $szoveg"
Ha azt szeretnénk, hogy egy $-jeles szövegrészlet ne értékel®djön kiváltozónévként az echo után, akkor aposztrófot kell használnunk:
echo 'Helló világ: $szoveg '
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 33 / 37
A Linux programozása Változók
Változók III.
Vannak ún. környezeti változók, amelyeknek az értékét bármikorfelhasználhatjuk a programjainkban:
Név Jelentés
$HOME a felhasználó saját könyvtára (∼)$HOSTNAME a gép neve$LANG a felhasználó (op.rsz.) nyelve és szövegkódolása$PATH parancsok keresési útja$PWD aktuális munkakönyvtár$USER a felhasználó bejelentkezési neve$USERNAME a felhasználó teljes neve
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 34 / 37
A Linux programozása A for ciklus
A for ciklus
A for ciklussal listák elemein tudunk végigmenni:
for v in lista; do
ciklusmag (hivatkozás ciklusváltozóra: $v)
done
Lista bármilyen szóközzel elválasztott lista is lehet:
for v in `ls `; do
echo "Egy fájl: $v"
done
A `` szerepe: a `` közé tett utasítás eredménye helyettesít®dik akifejezés helyére.
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 35 / 37
A Linux programozása A feltételes elágazás
A feltételes elágazás I.
A feltételes elágazás általános alakja:
if [ feltétel ]; then
igen ág
else
nem ág
fi
done
Az if után bármilyen UNIX-parancs kerülhet � ezeknek ugyanis vanvisszatérési értékük, ami hagyományosan 0, ha nincs hiba, különbenegy hibakód. Ez alapján a 0 felel meg a logikai IGAZ értéknek, min-den más HAMIS:
#!/bin/bash
if ls | grep alma; then
echo "alma létezik"
fi
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 36 / 37
A Linux programozása A feltételes elágazás
A feltételes elágazás II.
A feltételes elágazáshoz adott tesztel® kifejezések is léteznek:
Név Jelentés
-d fájlnév könyvtár-e?-e fájlnév létezik?-f fájlnév szabványos fájl?-r fájlnév olvasható?-w fájlnév írható?-x fájlnév futtatható?
#!/bin/bash
if [ -e $file]; then
echo "$file létezik"
else
echo "$file nem létezik"
fi
Nagy G., Timár A. (BME EET) A Linux alapjai 2014. 11. 06. 37 / 37