EDU::GAMF::Operációs rendszerek::Gyakorlatok

Innen: Farkas Attila Wiki
A lap korábbi változatát látod, amilyen ApelPro (vitalap | szerkesztései) 2023. szeptember 21., 13:41-kor történt szerkesztése után volt. (→‎mv)
Ugrás a navigációhoz Ugrás a kereséshez

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 másolásához ez esetben nincs szükségünk a recursive (-r) jelölésre.

rm

less

which

file

echo

cat

head

tail

wc

more

less

find

Programok csatornái

STDIN

STDOUT

STDERR

Pipeline

Parancsbehelyettesítés

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.