UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED BASH bevezetés, script írása, futtatása Operációs rendszerek 4. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 1 / 12
Felépítés - emlékeztető Felhasználói programok Shell Kernel Terminál Több fajta Terminál emulátor Kapcsolattatrás a shellel (burokkal) Hardware Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 2 / 12
Felépítés - shell Ezzel fogunk foglalkozni /bin/sh Bourne SHell wc grep /bin/ksh Korn SHell vi Hardware /bin/csh C SHell date /bin/bash Bourne Again SHell Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 3 / 12
Shell A shell (burok) egy olyan rendszerprogram, amely a kernel és a felhasználó között közvetít - lehetővé teszi programok indítását, így sokszor parancsértelmezőnek (command interpreter) is hívják. Hozzáférést biztosít a kernel egyes funkcióihoz, kényelmi szolgáltatásokat is nyújt Feladatai: Parancssor kezelése Átirányítások elvégzése Csővezeték létrehozása Mintaillesztő karakterek értelmezése Állománynév-kiegészítés végrehajtása Parancsok kötegelt végrehajtása (shell scriptek) Vezérlési szerkezetek értelmezése Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 4 / 12
Shell - subshell A shellből végrehajtott programok általában egy-egy külön alshellben (subshell) futnak Új process (eljárás) jön létre, így a subshellek párhuzamosan futhatnak Parancs után tett & jel A subshellekre lehet hivatkozni, értéküket megnézni echo $BASH_SUBSHELL Szülő shell BASH Gyerek shell BASH Gyerek shell BASH Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 5 / 12
BASH - bevezetés A legtöbb Linux rendszeren ez az alapértelmezett shell Neve a Bourne again (born again) kifejezéseket rövidíti, ez a korai Bourne shell-re utal (sh) A legtöbb Bourne shell scriptet is értelmezni tudja Szintaxisa nehézkes Két üzemmódja van Interaktív mód: a shell egy parancssort jelenít meg, majd a szabványos bemenetről parancsok végrehajtására várakozik Script mód: a shell a végrehajtandó parancsokat egy szöveges állományból olvassa (kötegelt végrehajtás), segítségével saját parancsot hozhatunk létre Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 6 / 12
BASH script- alapok A fájlok kiterjesztése.sh (konvenció) A script első sora tartalmazza a parancsértelmező fejlécet # jelnek közvetlenül a sor elején kell elhelyezkednie #! /bin/bash Az állomány minden sora külön-külön parancsként lesz végrehajtva, üres sor is megengedett A scriptet lehet futtatni alshellben, vagy az aktuális shellben is (ld. Rodek jegyzet) Futtatás: chmod +x [állománynév]: futtatási jog engedélyezése./[elérési út + állománynév]: script futtatása Ha az aktuális mappában van:./[állománynév] Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 7 / 12
BASH script- Hello World! #! /bin/bash echo "Hello World!" Vagy #! /bin/bash "Hello World!" >> in.txt cat in.txt hello.sh Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 8 / 12
BASH - szintaxis \: a megkezdett parancsot a következő sorba folytathatjuk #: sor végéig tartó megjegyzés (comment) Változók: Változók neve betűket, számokat és aláhúzásjelet tartalmazhat, és nem kezdődhet számjeggyel [név]=[érték]: értékadás $[név]: a megadott nevű változó aktuális értékének behelyettesítése ${[név]}: Megegyezik az előzővel, de ez akkor is használható, ha közvetlenül a kifejezés után bet ű, számjegy vagy aláhúzásjel áll Speciális jelentés elnyomása: \[karakter]: a karaktert közönségesként értelmezi [szöveg] : a szövegben minden karakter közönséges lesz [szöveg] : a szövegben csak \ ($, `, és \ előtt), $ és ` tartja meg speciális jelentését Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 9 / 12
BASH feladatok I Írj olyan scriptet, amely kiírja az aktuális könyvtár tartalmának tulajdonosi jogosultságait és az állomány nevét! (os04_1.sh) Írj olyan scriptet, amely kilistázza az aktuális könyvtárban a 3 legkisebb helyet elfoglaló állomány nevét és méretét! (os04_2.sh) Írj olyan scriptet, amely 1 szöveges állomány után írja Avoid the Gates of Hell. Use Linux. szöveget, és tárold le ezt egy másik szöveges állományban! (os04_3.sh) Írj olyan scriptet, amely létrehoz egy os.sh állományt, és futtathatóvá teszi azt! (os04_4.sh) Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 10 / 12
BASH feladatok II Írj olyan scriptet, amely az stdin-ről olvas számokat, ezeket beleírja az os.in fájlba, majd rendezetten visszaadja a 3 legkisebbet! (os04_5.sh) Írj olyan scriptet, amely létrehoz egy os.sh állományt, feltölti azt a billentyűzetről, és lefuttatja azt! (os04_6.sh) Írj olyan scriptet, amely kiírja egy szöveges állományba az aktuális könyvtárban lévő 5 legnagyobb tárhelyet elfoglaló állomány nevét és méretét! (os04_7.sh) Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 11 / 12
Linux fun folytatás.. sudo apt-get install cmatrix cmatrix Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik Viktor 12 / 12