==== Labor 6 inf. Mi MSC 4. szemeszter ===== == 6. sz. laboratóriumi munka == ^ Téma: ^ A GNU/Linux parancssor és bash parancsfájlok (szkriptek) alapjai| |A munka célja:| Elsajátítani a GNU/Linux operációs rendszer legfontosabb parancsait, bash parancsfájlok használatát. | |Elméleti ismeretek:| fájlkezelési parancsok, cut, grep, mc, ssh, du, cat, echo, ps, chmod, chown | |Szükséges eszközök és programok:| Telepített Ubuntu Linux (vagy más Linux disztribúció) operációs rendszer, Internet kapcsolat| == A munka menete: == Név:\\ Dátum, idő:\\ Számítógép:\\ Indítsa el a szövegszerkesztő programot. Másolja a laboratóriumi munka teljes szövegét majd illessze be a dokumentumba. ==== 1. Feladat ==== Kapcsolja be a számítógépét Ubuntu Linux operációs rendszert indítva. (Windows esetén VirtualBox programban indítsa el az Ubuntu Linux virtuális gépet).\\ ==== 2. Feladat ==== Nyissa meg az alábbi oktatási segédletet: http://okt.kmf.uz.ua/dw/doku.php?id=st-linux_alapok:st-linux_alapok\\ Olvassa el az 1-6 fejezeteket. Az ott olvasható parancsokat **próbálja is ki** a Terminál programban. ==== 3. Feladat ==== Másolás / beillesztés segítségével a minta parancsfájlokat hozza létre és próbálja ki a saját gépén is. ==== 4. Feladat ==== Másolja saját könyvtárába az alábbi parancsfájlt **labminta.sc** néven. #!/bin/bash # letorli kepernyot clear echo "Jelenitse meg a kepernyon az elso n (n<90) Fibonacci szamot!" echo "a script ellenorizze a megadott parameterek szamat és azt is," echo "hogy az elso parameter egesz szam!" echo # megjeleniti a program nevet es az elso parametert echo $0 $1; echo # ellenorizi, hogy a parameterek szama egy: if test $# -eq 1 # ha igen: then # ellenorzi, hogy az elso parameter szam # a szuro csak azokat a karaktereket engedi at # amlyek 0-9 et tartalmaznak, # az a erteke vagy szam lesz, vagy ures a=`echo $1 | grep '^[0-9]*$'` # # megjelenk az a a kepernyon (ha nincs #) # echo "a= $a" # # ellenorzi, hogy a szam-e # ha az elso ES masodik parametert kellene ellenorizni, akkor: # if test -n "$a" -a -n "$b" # tehat: ha az "a" ES a "b" IS szam if test -n "$a" # ha igen: then # ellenorizi, hogy az elso parameter kissebb mint 90 if test $1 -le 90 then # itt jon maga a program # Az elso ket szam 1 es 1 f1=1 f2=1 echo " Fibonacci szamok:" echo " $f1" echo " $f2" # aztan: # ciklus KEZDETE # Az i valtozni fog 3-tol addig a szamig amit maegadtunk parameterkent: for i in `seq 3 $1` do # minden ujabb szam az elozo ketto osszege: fibo=`expr $f1 '+' $f2` echo " $fibo" # az uj f1 a regi f2 lesz f1=$f2 # az uj f2 pedig a kiszmolt osszeg f2=$fibo done # a ciklus VEGE else echo "Nem megfelelo parameter n > 90 !" fi else echo "Nem szam az elso parameter" fi else echo "a parameterek szama nem egy, hanem $# !!!" fi Adjon futási jogot és ellenőrizze és vizsgálja meg működését: {{ :speclab-inf:laborok:labminta201703.png?direct&645 |}} Próbálja ki a szkript működést különböző paraméterekkel. ./labminta.sc 99 ./labminta.sc 7 7 ./labminta.sc b ./labminta.sc ==== 5. Feladat ==== Az alábbi feladatok közül két megadottat végezzen el önállóan (a feladatok sorszámát e-maiben kapja). Amennyiben szükséges a program **ellenőrizze** a paraméterek számát és helyességét (egész számok esetén, hogy szám-e; fájlok, könyvtárak létezése, stb.) és tartalmazzanak rövid magyarázatot is. - Írjon szkriptet, ami bekér egy számot és ellenőrzi, hogy osztható-e hárommal. - Írjon szkriptet, ami kiírja a páros számokat a paraméterében megadott két érték között. Ellenőrizze, hogy az első paraméter kisebb mint a második. - Írjon szkriptet, ami a paraméterében megadott 3 számmal elvégzi a következő műveleteket a*b*c-(a+b+c) - Írjon szkriptet, ami a paraméterében megadott fájlra ellenőrzi jogosultságait és kiírja, a „rendelkezünk írási joggal” vagy „nem rendelkezünk írási joggal” szöveget. - Írjon szkriptet, ami a paraméterében megadott számról eldönti, hogy osztható-e hattal. - Írjon szkriptet, ami a bc program segítségével kiszámítja a paraméterében megadott sugarú kör kerületét és területét. - Írjon szkriptet, ami a paraméterében megadott három szám közül a legkisebbet kiírja a képernyőre. - Írjon szkriptet, ami kiírja a december havi naptárakat 1985.-től 2000.-ig. Mindegyiket 3 sec-ig. A a naptárak között 1 másodpercig a képernyő legyen üres. - Írjon szkriptet, ami kiírja a paraméterben megadott sorszámú hónap naptárát 1990.-től 2010.-ig egyesével mindegyiket 4 másodpercig. - Írjon szkriptet, ami kiírja a paraméterben megadott állomány karaktereinek számát! Ha a fájl nem létezik jelezze szöveg kiírásával. - Írjon szkriptet, ami megtalálja a paraméterében megadott könyvtár legtöbb sort tartalmazó állományának nevét és sorainak számát! - Írjon szkriptet, ami kiírja azokat az 100-nál kisebb számokat, amelyeknek 4 osztójuk van! - Írjon szkriptet, ami kiírja azokat a paraméterben megadott számnál kisebb számokat, amelyeknek 3 osztójuk van! - Írjon szkriptet, ami megjeleníti az 1, 2, 3, … n számok faktoriálisát! Az n-t paraméterben adja meg, ellenőrizze, hogy egész szám és kisebb mint 50. - Írjon szkriptet, ami megjeleníti a két paraméterében megadott évszámot és azok közötti évszámokat, amennyiben ezekben az években a húsvét vasárnap a nyugati és az ortodox egyházban ugyanarra a napra esik. A szkript ellenőrizze, hogy két paramétert adott meg, azok egész számok. A 2. paraméter nem lehet kisebb mint az első. ==== 6. Feladat ==== A szkripteket 1.sc és 2.sc néven mentse. Működésükről készítsen legalább két képet és illessze be a dokumentumba. ==== 7. Feladat ==== A két szkript sorait illessze be a dokumentumba és mentse dokumentumot Lab12-MONOGRAM.odt néven. ==== 8. Feladat ==== Küldjön emailt a pferi@kmf.uz.ua címre. A levél tárgya legyen **Saját Név LAB12 12** tartalma pedig a következő: jelen nyilatkozatom elküldésével kijelentem, hogy ezt a feladat önálló munkám, annak elkészítése során az önálló munka kitétel tekintetében a feladatot kiadó és az azt ellenőrző oktatót nem tévesztettem meg. Jelen nyilatkozat elküldésével tudomásul veszem, hogy amennyiben a feladatot nem magam készítettem, a tárgy oktatója befogadását és a félév aláírását megtagadja. A levélhez csatolja a dokumentumot.