==== 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.