EDU::GAMF::Operációs rendszerek::Gyakorlatok
1. óra
Az első óra a tantárgy és annak követelményeinek ismertetésével kezdődik, majd egy-két alap utasítást tekintünk meg. Ezután a programok csatornáival folytatjuk.
Parancsok és példák
man
A man parancs segítségével megtekinthetjük egy-egy alkalmazás, parancs, esetleg külső könyvtár függvényeinek dokumentációját.
Használata: A program neve után írhatjuk, hogy melyik alkalmazás, parancs vagy esetleg külső könyvtár függvényének dokumentációját szeretnénk megtekinteni. Megtekinthetjük ily módon a man parancs használati útmutatóját is a következő utasítás kiadásával:
man man
Hasonló módon alkalmazhatjuk bármelyik parancsra, amelyek ezen a weboldalon felsorolásra kerültek. Pl. a head utasítás dokumentációját az alábbi módon érhetjük el
man head
ls
Érdemes megtekinteni a parancs dokumentációját a man ls utasítás kiadásával, tisztában legyünk ez elérhető kapcsolókkal és funkciókkal.
Az ls parancs segítségével listázhatjuk a mappa tartalmát. Alapértelmezetten a ., tehát a jelenlegi könyvtárat listázza.
# meghívás paraméter nélkül
ls
# meghívás . paraméterrel - ugyanaz az eredmény
ls .
A listázni kívánt könyvtár nevét megadhatjuk paraméterben:
# root könyvtár listázása
ls /
# a /usr/local/bin könyvtár listázása
ls /usr/local/bin
Érdemes megjegyezni a hosszú formátumú kiírást, aminek segítségével a fájlrendszer bejegyzések jogosultságait és méretét kérhetjük le.
# Jelenlegi könyvtárban listáz minden elemet és azok tulajdonságait
ls -l
# A /bin/ls fájl jogosultságainak lekérdezése
ls -l /bin/ls
Próbáljuk ki, hogy ha egy mappa nevével futtatjuk le a parancsot, akkor az ls megnyitja a könyvtárat és annak tartalmát listázza ki.
# a /bin könyvtár tartalma listázódik, nem a /bin könyvtár maga
ls /bin
Ez különösen akkor okoz problémát, ha például az adott könyvtár jogosultságait szeretnénk megtekinteni. Ekkor két választási lehetőségünk adódik:
# A felette lévő könyvtárat listázzuk és kikeressük a megfelelő bejegyzést
ls / -l
# használjuk a -d kapcsolót, aminek segítségével felszólítjuk az ls-t, hogy ne nyissa meg az adott könyvtárat
# Ekkor a könyvtár listázódik, nem a tartalma
ls -d /bin
pwd
A pwd parancs segítségével lekérdezhetjük annak a könyvtárnak az abszolút elérési útvonalát, amelyben éppen benne vagyunk.
A parancsot főleg arra használjuk, hogy aktuálisan mellettünk elhelyezett fájlok és könyvtárak abszolút útvonalát ki tudjuk alakítani.
pwd
cd
A cd parancs segítségével könyvtárat válthatunk (changedir). A cél könyvtár nevét paraméterben kell megadnunk.
# root könyvtár megnyitása
cd /
# HOME könyvtár megnyitása
# ~ egy alias
cd ~
# /usr/bin megnyitása
cd /usr/bin
A hivatkozásoknál, így a cd esetében is lehetőségünk van relatív és abszolút hivatkozásokat használni:
- Az abszolút hivatkozás / elérési út mindig / jellel kezdődik. pl.: cd /home/, cd /usr/bin
- A relatív hivatkozás vagy nem rendelkezik kezdőkarakterrel: cd home, cd bin, vagy . illetve .. karakterekkel kezdődnek.
- A . könyvtár jelenti az aktuális könyvtárat
- A .. könyvtár jelenti a szülő könyvtárat
# szülő könyvtár megnyitása
cd ../
# a szülőkönyvtárban található bin könyvtár megnyitása
cd ../bin
# az aktuális könyvtárban található bin könyvtár megnyitása
cd ./bin
cd bin # vegyük észre: a ./ ez esetben elhagyható
mkdir
Az mkdir parancs segítségével könyvtárakat hozhatunk létre (make directory). Alapértelmezetten a . könyvtáron (tehát ahol éppen tartózkodunk, azon a könyvtáron) belül hozza létre az új mappát, de lehetőségünk van mind relatív, mind abszolút hivatkozások használatára.
# folder könyvtár létrehozása az aktuális könyvtárban
mkdir folder
mkdir ./folder2
# subfolder létrehozása a folder könyvtáron belül.
mkdir folder/subfolder
# létrehozás a /tmp könyvtáron belül, akárhol is vagyunk
mkdir /tmp/folder
# folder létrehozása a szülőkönyvtárban
mkdir ../folder
A fentebb leírtak alapján egyetlen könyvtárat hozhatunk létre, egy már létező könyvtáron belül, legyen az éppen az, amiben tartózkodunk, vagy valahol máshol a fájlrendszerben. Azonban előfordul, hogy egyszerre több mappát szeretnénk elkészíteni, például egy mélyebb struktúrát szeretnénk kialakítani, mint ami a rendelkezésünkre áll. Ezt természetesen megtehetjük úgy, hogy az egyes szinteket egyesével hozzuk létre, de alkalmazhatunk kapcsolót, amelynek segítségével a nem létező szülőkönyvtárakat is létrehozza, amennyiben nem léteznek.
# root könyvtáron belül létrejön egy ''test'' könyvtár és azon belül jön létre a ''folder'' könyvtár.
mkdir /test/folder/ -p
# az aktuális könyvtárban jön létre egy ''test'' könyvtár és azon belül a ''folder'' könyvtár
mkdir -p test/folder
# a jelenlegi könyvtárban létrejon a ''test'' könyvtár,
# azon belül létrejön egy ''folder1'' és egy ''folder2'' könyvtár,
# majd mind a kettőben létrejön a ''work'' könyvtár.
mkdir -p test/{folder1,folder2}/work
Természetesen ahhoz, hogy egy könyvtárban további fájlokat vagy könyvtárakat hozzunk létre jogosultság szükséges.
rmdir
Az rmdir parancs segítségével üres könyvtárakat törölhetünk.
Figyelem! Ha a könyvtár nem üres (fájlok vagy egyéb könyvtárak találhatók benne, akkor hibaüzenetet kapunk és nem csinál semmit!
# relatív hivatkozással
rmdir test/folder
# abszolút hivatkozással
rmdir /test/folder
cp
A cp parancs segítségével fájlokat és könyvtárakat másolhatunk a fájlrendszer egy pontjáról a másikra.
# /etc/passwd fájl lemásolása a jelenlegi könyvtárba - ls paranccsal ellenőrízhető
cp /etc/passwd ./
# /etc/passwd lemásolása a jelenlegi könyvtárba és közben átnevezés file-ra
cp /etc/passwd ./file
# /etc/passwd lemásolása a /tmp könyvtárba
cp /etc/passwd /tmp/
# /etc/passwd lemásolása a /tmp könyvtárba és közben átnevezés file-ra
cp /etc/passwd /tmp/file
Könyvtárak másolása esetén a -r kapcsoló használata szükséges (recursive).
# /etc/network könyvtár és annak tartalmát másolja a /tmp könyvtárba
cp /etc/network /tmp/ -r
mv
Az mv parancs segítségével fájlokat és könyvtárakat mozgathatunk. Ezzel a paranccsal nevezhetjük át a fájlrendszer elemeit.
A próbálkozáshoz másoljuk le a /etc/passwd állományt, ha eddig nem tettük meg!
cp /etc/passwd ./
# passwd állomány átnevezése file-ra
mv passwd file
# nem fut le!
# /etc/passwd állomány átnevezése file-ra
mv /etc/passwd /etc/file
# nem fut le!
# /etc/passwd állomány áthelyezése /tmp-be
mv /etc/passwd /tmp
# nem fut le!
# /etc/passwd állomány áthelyezése /tmp-be és közben átnevezés file-ra
mv /etc/passwd /tmp/file
A könyvtárak áthelyezéséhez (vagy átnevezéséhez) ez esetben nincs szükségünk a recursive (-r) jelölésre.
rm
Az rm parancs segítségével fájlokat és könyvtárakat törölhetünk.
rm file
Könyvtárak törléséhez alkalmaznunk kell a rekurzív jelölést: -r.
rm folder -r
less
A less egy fájlnézegető, amelynek segítségével lapozhatunk billentyűzet segítségével a fájlokban.
less /etc/passwd
more
A more szintén egy fájlnézegető, de ennek segítségével csak előre lapozhatunk, visszafelé nem.
more /etc/passwd
which
A 'which program segítségével lekérdezhetjük, hogy az adott utasításhoz tartozó állomány melyik mappában található.
# az ls parancs abszolút elérési útvonala
which ls
# a which parancs abszolút elérési útvonala
which which
# a man parancs elérési útvonala
which man
file
A file utasítás segítségével lekérdezhetjük, hogy egy adott állomány milyen típusú: futtatható állomány (ELF), ASCII stb.
file /etc/passwd
file /bin/ls
echo
Az echo mindent kiír a képernyőre, amit parancssori argumentumként adunk át neki.
echo "Hello World"
echo Hello World
echo Ez egy teszt üzenet
echo "Ez egy teszt üzenet"
Láthatjuk, hogy idézőjeltől függetlenül minden megjelenik a képernyőn. Észrevehetjük azt is, hogy minden sor végén új sor karakter (enter) található, amit a "-n" kapcsoló segítségével kapcsolhatunk ki.
echo -n "Hello world"
cat
A cat utasítás fájlokat képes összefűzni és az eredményt a képernyőre írja ki.
# /etc/passwd és a /etc/profile fájlok összefűzése a képernyőn (ebben a sorrendben)
cat /etc/passwd /etc/profile
Egy gyakoribb felhasználási módja, hogy a fájlok tartalmát a képernyőre vessük - ez esetben nem fűzünk hozzá semmit a fájlhoz.
# /etc/passwd és a <semmi> összefűzése és megjelenítése a képernyőn
cat /etc/passwd
head
A head utasítás segítségével a fájlok első N során írhatjuk ki a képernyőre. Alapértelmezetten N=10, így ha csak egy fájlnevet adunk neki, akkor annak legfeljebb 10 sorát fogja kiírni (ha van annyi).
head /etc/passwd
Az alapértelmezett N=10 értéket a -n kapcsoló segítségével módosíthatjuk
head -n 5 /etc/passwd
# a -n a dokumentáció elhagyható, ha a - után szám található
head -5 /etc/passwd
tail
A tail hasonlóan működik, mint a head, de ez esetben nem a fájl elejéről ír ki N sort, hanem a végéről.
tail /etc/passwd
Az alapértelmezett N=10 értéket a -n kapcsoló segítségével módosíthatjuk
tail -n 5 /etc/passwd
# a -n a dokumentáció elhagyható, ha a - után szám található
tail -5 /etc/passwd
wc
less
find
Programok csatornái
STDIN
STDOUT
STDERR
Pipeline
Parancsbehelyettesítés
Feladatok
2. óra
A második órát az alap utasításokkal folytatjuk. Utána scriptek írásával folytatjuk, amelyben megtekintjük a különböző vezérlési szerkezeteket is.
Parancsok és példák
mcedit
chmod
shift
cut
sort
tr
if
for
while
seq
read
Script létrehozása
- Script megírása
- Futási jog
Pozicionális paraméterek
Változók
Vezérlési szerkezetek
3. óra
A harmadik órán reguláris nyelvekkel foglalkozunk. A nyelv szintaktikai elemzése után a BASH-ben erre alkalmas szoftvert, a grep-et foguk megvizsgálni.
Reguláris kifejezés szerkezete
Parancsok és példák
grep
4. óra
A negyedik órán a reguláris kifejezések elkészítését gyakoroljuk különböző példákon keresztül. Főleg scripten belül használjuk.
Feladatok
5. óra
Az ötödik órán minta ZH feladatsort oldunk meg.