Programozás alapjai gyakorlat 2015-2016/1

1. gyakorlat


Évkezdési adminisztráció

Ismerkedés

  • Tűzvédelmi napló
  • Szabályzatok
  • Követelmények

Regisztráció

  • Regisztráció (http://www.stud.u-szeged.hu -> a bal menüből STUD regisztráció -> Adatlap kitöltése, majd küldése )
    • Ekkor kapni fog mindenki egy aznonosítót (h-s azonosító: hxxxxxx - ahol az x-ek számok) és egy induló jelszót. Ezeket az adatokat írja fel mindenki mindenképp!
  • Jelszóváltás - az előzőleg kapott jelszavat két helyen is meg kell változtatni:
    • Jelszó leváltása STUD rendszeren: a bal menüből a Jelszóváltás kiválasztása.
    • Jelszó leváltása a kabinethez: https://www.inf.u-szeged.hu/jelszo, jelszóváltó űrlap segítségével.
  • Bejelentkezés - két külön rendszerbe tudsz bejelentkezni ezután:
    • A STUD szerverre (levelezés, honlapkészítés)
    • A kabinetbe (tantermi gépek, saját mappa, bíró szerver, stb.).

Levelezés

  • Ezután már levelezni is tudsz a STUD-os email címeddel.
  • Jelentkezz be a levelező felületre a STUD szerver bal oldali menüjében lévő Levelezés / Horde / menüpont megnyitásával és az adataid megadásával.
  • Azonosítód (itt és a kabinetes bejelentkezéskor is) a h-s azonosítód, a jelszavad pedig a módosított, általad az előbbiekben megadott jelszó.
  • A te email címed formája: hxxxxxx@stud.u-szeged.hu / <Vezetéknév>.<Keresztnév, vagy Keresztnevek ponttal elválasztva>[sorszám]@stud.u-szeged.hu .
  • Majd sikeres bejelentkezés után mindenki küldjön nekem egy emailt a Leko.Gabor@stud.u-szeged.hu címre, melynek a szerkezete az alábbi módon nézzen ki:
    • Tárgy (Copy-Paste használata ajánlott):
      • Keddi csoport esetén: [progalap2015][K][9][reg]
      • Csütörtöki csoport esetén: [progalap2015][CS][15][reg]
    • Tartalom: h-s azonosító;EHA-kód;név . ( Példa: h165057;LEGTAAT.SZE;Lékó Gábor )

Egyéb

  • A kabinetes rendszerben mindenki kap egy mappát ("home mappa"), amiben az órai munkáit tárolhatja. Ezen a kvóta 300 MB illetve 10000 fájl. Ezenkívül mindenki eléri a pub-könyvtárat, melyben a tananyagok találhatók. (Otthonról való bejelentkezéshez és adatmozgatáshoz hasznos programokat találhatsz a Linkek között (WinSCP, PUTTY) - Az egeret a letöltési linkekre húzva bővebb információt kaphatsz a programokról ).

  • Próbáljuk is ki a saját HOME-unk felcsatolását, melyet a "Mount Home" iconra kattintás után a h-s azonosítónk és jelszavunk megadásával tehetünk meg. Tesztként hozzunk létre pl. egy üres dokumentumot, mentsük le, majd csatoljuk le a HOME-unkat - "Unmount Home". Egy ismételt felcsatlakozással ellenőrizzük le, hogy az előzőekben létrehozott file továbbra is megtalálható-e ott, ahol elhelyeztük. Minden felcsatolás esetén, használat után csatlakoztassuk le a HOME-unkat!


Linux alapok 1/2

Debian, Ubuntu és VirtualBox letöltési lehetőség úgyszint a Linkek között.

Az általam készített Linux jegyzet [ .txt ] , [ .pdf ]. A gyakorlatokat ez alapján fogom tartani. Minden ami a ZH-ban vissza lesz kérve a Linux parancsokról itt megtalálható. (Utolsó módosítás: 2014.09.07.) Gyakorlásra és ZH-ra készülésre magát a weboldalt ajánlanám, mivel a fent említett jegyzet kicsivel bővített formátuma és átláthatóbb is.

A fenti jegyzet fő forrása .

Linux parancsok itt .

Debian telepítés leírása itt .


Fájlkezelés

  • pwd

  • (print working directory)

    Aktuális könyvtár elérési útvonala. Bármikor kiadhatod ezt a parancsot, eredményként megkapod, hogy pontosan "hol" is vagy.

    lekogabi@lekogabi:~/Letöltések/eclipse$ pwd
    /home/lekogabi/Letöltések/eclipse
    
  • history

  • Kiírja a terminal előzményeket.

  • cd <none, könyvtár, könyvtárszerkezet>

  • (change directory)

    A könyvtár rendszerben való mozgást teszi lehetõvé. Paraméterként a megcélzott könyvtár nevét kell megadni, vagy abszolút, vagy relatív elérési útvonal használatával.

    Abszolút elérési útvonal megadásánál a keresett könyvtár teljes elérési útvonalát kell megadni. Tehát rootból indulva pl.: /home/hxxxxxx/mappa/file1 .

    Relatív címzés esetén azt mondjuk csak meg, hogy az aktuális könyvtárhoz képest hol helyezkedik el a megcélzott könyvtár. Tehát aktuális könyvtárból indulva pl.: ha éppen a /home/hxxxxxx-ben vagyunk: ./mappa/file1 .

        aktuális könyvtár: .

        szülőkönyvtár: ..

    További példák:

    Abszolút címzés:

    lekogabi@lekogabi:~$	
    lekogabi@lekogabi:~$ cd /home/lekogabi/Letöltések/eclipse
    lekogabi@lekogabi:~/Letöltések/eclipse$ 
    

    Relatív címzés:

    lekogabi@lekogabi:~$	
    lekogabi@lekogabi:~$ cd Letöltések/eclipse/
    lekogabi@lekogabi:~/Letöltések/eclipse$ 
    

    Visszalépés a szülő könyvtárba:

    lekogabi@lekogabi:~/Letöltések/eclipse$ cd ..
    lekogabi@lekogabi:~/Letöltések$ cd ..
    lekogabi@lekogabi:~$
    
    vagy
    lekogabi@lekogabi:~/Letöltések/eclipse$ cd ../..
    lekogabi@lekogabi:~$
    

    A cd parnacs önmagában visszadob a hxxxxxx könyvtárba.

    lekogabi@lekogabi:~/Letöltések/eclipse$ cd
    lekogabi@lekogabi:~$
    
  • ls

  • (list)

    Ez a parancs megmutatja az aktuális könyvtárban tálalható fájlok neveit. A lista alapértelmezés szerint abc sorrendben sorolja fel a neveket, de alkalmas kapcsolók segítségével más sorrendet is elõírhatunk. pl.:

    lekogabi@lekogabi:~/Letöltések/eclipse$ ls
    

    Eredményként kiíratódik a terminálban az 'eclipse' mappa tartalma.

    Kapcsolók:

        -l: oszlopokban, részletesen mutatja a fájlok adatait

        -d <könyvtár>: csak az adott könyvtár adatait írja ki

        -a: a rejtett fájlokat is mutatja

        -R: könyvtáron belüli könyvtárak tartalmát is listázza

        -r: forditott sorrendben listáz

        -h: "barátságosabb" formában listázza ki a számokat

    A kapcsolókat lehet kombinálva is használni, igy pl.:

    lekogabi@lekogabi:~/Letöltések/eclipse$ ls -l -a -r
    lekogabi@lekogabi:~/Letöltések/eclipse$ ls -lar
    

    Mindkét parancs kifogja listázni oszlopokba rendezve (-l), részletes adatokkal a rejtett fájlokat (-a) is, forditott sorrendben (-r).

  • mkdir [kapcsoló]<új mappa>

  • (make directory)

    Új könyvtár létrehozására (csak az adott könyvtárban). pl.:

    lekogabi@lekogabi:~/Dokumentumok$ mkdir hello

    Létrejön egy "hello" nevű mappa a 'Dokumentumok'-on belül.

    Kapcsolók:

        -p: Létrehozza a kívánt könyvtár eléréséig az összes szükséges könyvtárat. pl.:

    lekogabi@lekogabi:~/Dokumentumok$ mkdir -p hello/hello2/hello3

    Végig létrehozza a könyvtárszerkezetet.

        -m: Megadhatjuk az új katalógus hozzáférési jogát oktálisan a "mode" értékének beállításával. pl.:

    lekogabi@lekogabi:~/Dokumentumok/hello$ mkdir -m 777 hello2
    lekogabi@lekogabi:~/Dokumentumok/hello$ ls -l
    drwxrwxrwx 2 lekogabi lekogabi 4096 aug    5 17:05 hello2
    

    A '777' megadásával teljeskörű jogokat biztosítunk mindhárom felhasználói csoportnak (user, group, other). A 3 db 7-es számjegy egyenkénti csökkentésével (0-7) lehet egyre kisebb jogokkal felruházni a felhasználói csoportokat.

    Az elérési jogok megváltoztatásáról/értelmezéséről részletesen a "Fájlkezelés" alfejezet végén (chmod).

  • rmdir [kapcsoló]<törlendő mappa>

  • (remove directory)

    Könyvtárak törlésére szolgáló parancs. Az rmdir parancs csak üres könyvtárat vagy könyvtárakat töröl. pl.:

    lekogabi@lekogabi:~/Dokumentumok$ mkdir hello
    lekogabi@lekogabi:~/Dokumentumok$ rmdir hello
    

    Eredményül kitörlődik a 'hello' nevű mappa.

    Kapcsolók:

        -p: A könyvtár törlése után, a szülõ könyvtárat is törli, ha üres, rekurzívan.

    A Dokumentumok mappán belül található egy hello nevű mappa és azon belül egy hello2 nevű mappa. Ha az aktuális könyvtár a Dokumentumok, akkor a -p kapcsoló segítségével, ha kitöröljük a hello2 mappát, akkor a hello mappa is törlődni fog (mivel nem tartalmaz mást).

    lekogabi@lekogabi:~/Dokumentumok$ mkdir -p hello/hello2
    lekogabi@lekogabi:~/Dokumentumok$ rmdir -p hello/hello2
    
  • rm [kapcsoló]<törlendő fájl(ok)>

  • (remove)

    Kitörli az rm parancs után található fájlokat (könyvtárakat nem, arra az rmdir használandó, kivéve kapcsoló hozzáadásával - lásd lentebb). pl.:

    lekogabi@lekogabi:~/Dokumentumok$ rm file1.txt file2.txt

    Eredményül a file1.txt és a file2.txt törlésre kerül.

    Kapcsolók:

        -f: sosem kérdez.

        -i: kétes esetben kérdez.

        -r: könyvtár törlésére, akkor is törli ha nem üres!

        -R: -//-

  • mv [kapcsoló]<forrás><cél>

  • (move)

    A fájlok állományrendszeren belüli mozgatására szolgáló parancs. Ha nem adunk meg fájlnevet a célnál, akkor nem változik meg a neve, különben a megadott fájlnév lesz a célkönyvtárban. pl.:

    lekogabi@lekogabi:~/Dokumentumok$ mv hello /home/lekogabi/Letöltések

    Eredményül a 'hello' nevű fájl átkerül a Dokumentumok könyvtárból a Letöltések könyvtárba.

    Kapcsolók:

        -b: biztonsági másolatot készít a forrásfájlról.

        -f: sosem kérdez felülírásnál.

        -i: kétes esetben kérdez (pl. névütközés...).

        -u: csak régebbit ír felül.

  • cp [kapcsoló]<forrás><cél>

  • (copy)

    Átmásolja a forrás fájlt a megadott helyre. pl.:

    lekogabi@lekogabi:~/Letöltések$ cp image.png /home/lekogabi/Dokumentumok

    Eredményül átmásolja a 'image.png' fájlt a Letöltések könyvtárból a Dokumentumok könyvtárba.

    Kapcsolók:

        -r: könyvtár egész tartalmának másolása.

        -R: -//-

        -b: minden célfájlról mentés.

        -f: sosem kérdez.

        -i: kétes esetben kérdez.

        -u: csak régebbit írja felül.

        -l: linkelés másolás helyett.

        -s: szimbólikus linket készít.

  • ln [kapcsoló]<forrás><cél>

  • (link)

    Az első paraméter a fájl, amihez szeretnénk linket készíteni, a második paraméter a link neve. Kapcsoló nélkül hard link készítése.

    Kapcsolók:

        -s: Szimbólikus (soft) link készitése.

    Hard link pl.:

    lekogabi@lekogabi:~/Dokumentumok$ cat > file1.txt
    hello
    lekogabi@lekogabi:~/Dokumentumok$ ln file1.txt file2.txt
    lekogabi@lekogabi:~/Dokumentumok$ ls -l
    -rw-r--r-- 2 lekogabi lekogabi       6 aug    7 01:15 file1.txt
    -rw-r--r-- 2 lekogabi lekogabi       6 aug    7 01:15 file2.txt
    lekogabi@lekogabi:~/Dokumentumok$ cat >> file1.txt
    world!
    

    Létrehozunk egy .txt fájlt 'file1' névvel, melybe a "hello" szöveget irtuk. Majd készitettünk egy hard linket a fájlunkról 'file2' névvel. Majd módositottuk a file1-et, amelynek eredményeképp a file2 is módosult. Igy mindkét .txt fájlban a "hello world!" szöveg fog szerepelni. Listázásnál a második mezõ jelenti a fájlra mutató hard linkek számát.

    Szimbólikus link:

    lekogabi@lekogabi:~/Dokumentumok$ ln -s file1.txt file3.txt
    lekogabi@lekogabi:~/Dokumentumok$ ls -l
    -rw-r--r-- 2 lekogabi lekogabi      13 aug    7 01:16 file1.txt
    -rw-r--r-- 2 lekogabi lekogabi      13 aug    7 01:16 file2.txt
    lrwxrwxrwx 1 lekogabi lekogabi       9 aug    7 01:29 file3.txt -> file1.txt
    lekogabi@lekogabi:~/Dokumentumok$ cat >> file1.txt
    lekogabi@lekogabi:~/Dokumentumok$ rm file1.txt
    lekogabi@lekogabi:~/Dokumentumok$ ls -l
    -rw-r--r-- 1 lekogabi lekogabi      29 aug    7 01:34 file2.txt
    lrwxrwxrwx 1 lekogabi lekogabi       9 aug    7 01:29 file3.txt -> file1.txt
    

    A meglvévő file1.txt fájlunkhoz készítünk egy szimbólikus linket. Listázás után ez jól megfigyelhető az elkészült file3.txt után látható nyil alapján, amely a file1.txt-re mutat. A hard linkkel ellentétben, amennyiben töröljük a file1.txt-t, akkor a file3.txt használhatatlan lesz, mivel töröltük a fájlt, amire mutatott.

  • du

  • A fájljaink és könyvtáraink által elfoglalt lemezterületet lehet vele megtekinteni. pl.:

    lekogabi@lekogabi:~/Dokumentumok$ du file2.txt
    4	file2.txt
    lekogabi@lekogabi:~/Dokumentumok$ du file2.txt hello
    4	file2.txt
    4	hello
    

    Kapcsolók:

        -a: minden fájl adatait kiírja a könyvtár(ak)on belül, nem csak a könyvtár(ak)ét.

        -h: "barátibb" alakban a számok.

        -m: megabájtban írja ki a méretet.

        -s: csak összméret.

  • chmod

  • Az elérési jogok megváltoztatása a chmod paranccsal lehetséges a tulajdonos számára. Szintaxisa pedig:

    1. verzió:

        chmod [ugoa][+-][rwx] fájlnév

    Az [ugoa] kapcsolókkal írjuk elõ, hogy kinek adjuk a jogot. Adhatunk jogokat a tulajdonosnak (u - user), a csoportnak (g - group), másoknak (o - others) vagy pedig mindenkinek egyszerre (a - all). A [+-] azt jelenti, hogy adhatunk (+) vagy elvehetünk (-) jogokat. Végül pedig, hogy olvasási (r - Read), írási (w - Write) vagy futtatási (eXecute) jogot adunk. pl.:

    lekogabi@lekogabi:~/Dokumentumok$ ls -l
    drwxrwxrwx 2 lekogabi lekogabi    4096 aug    9 15:07 hello
    lekogabi@lekogabi:~/Dokumentumok$ chmod g-w hello
    lekogabi@lekogabi:~/Dokumentumok$ ls -l
    drwxr-xrwx 2 lekogabi lekogabi    4096 aug    9 15:07 hello
    

    2. verzió

        chmod <xxx> fájlnév

    Hasonló az előzőhöz, viszont itt minden x helyén 0-7-ig való osztályozással adható meg a különböző felhasználói csoportok jogosultágai.

    Rendre egy darab x helyettesítésének jelentése:

    0:	000		---		semmi jog
    1:	001		--x		csak futtatási
    2:	010		-w-		csak írási
    3:	011		-wx		írási és futtatási
    4:	100		r--		csak olvasási
    5:	101		r-x		olvasási és futtatási
    6:	110		rw-		olvasási és írási
    7:	111		rwx		olvasási, írási és futtatási jog
    

    pl.:

    lekogabi@lekogabi:~/Dokumentumok$ ls -l
    drwx----wx 2 lekogabi lekogabi    4096 aug    9 15:07 hello
    lekogabi@lekogabi:~/Dokumentumok$ chmod 777 hello
    lekogabi@lekogabi:~/Dokumentumok$ ls -l
    drwxrwxrwx 2 lekogabi lekogabi    4096 aug    9 15:07 hello
    

    Kapcsolók:

        -R: rekurzívan az összes fájlra és alkönyvtárra.


Felhasználók

  • finger <argumentum>

  • Kiírja, hogy kik vannak bejelentkezve az aktuális gépre.

    felhasználó: a megadott felhasználóról ír ki adatokat.

  • who

  • Kiírja, hogy kik vannak bejelentkezve az aktuális gépre, plusz adatokat ír ki a finger-hez képest.

  • w

  • Ugyanaz, mint a who, csak kiírja, hogy min dolgozik.


Multitask

  • ps

  • Kiírja a képernyőre az aktuális process-eket (futó vagy várakozó programokat, amik az adott terminálhoz kapcsolódnak).

        -e: az összes futó process-t kiírja (más terminálhoz/terminálhoz nem kacspoltakat is).

        -f: több információ.

        -u user: csak a megadott user által "birtokolt" processzek listázása.

  • jobs

  • Kiírja az aktuális jobokat, amik az adott terminálhoz kapcsolódnak.

  • ^C

  • Ctrl+c paranccsal leállíthatunk előtérben futó folyamatokat.

  • ^Z

  • Ctrl+z paranccsal szüneteltethetünk előtérben futó folyamatokat.

  • bg %<szám>

  • Várakozó job-ok elinditását teszi lehetővé, a "szám" helyére a job azonosítója kerül, háttérben indítja el (konzolt nem "használja").

  • fg %<szám>

  • Várakozó job-ok elindítását teszi lehetővé, a "szám" helyére a job azonosítója kerül, előtérben indítja el (konzolt "használja").

  • kill %<szám>/PID

  • Process-eket és job-okat tudunk vele leállítani.

    %<szám> formátumnál a szám helyére a job azonosítóját kell írni.

    PID a process azonosítójának felel meg, és ezt a process-t szakítja meg (csak akkor, ha fut).

    Kapcsolók:

        -9: a leállított process-t is megszakítja.

        -s: úgy állítja le a job-ot, hogy még újra lehet indítani.

    Példa a job-ok kezelésére:

    lekogabi@lekogabi:~$ cat > file.txt
    hello
    ^C
    lekogabi@lekogabi:~$ cat > file.txt
    hello
    ^Z
    [1]+  Megállítva            cat > file.txt
    lekogabi@lekogabi:~$ jobs
    [1]+  Megállítva            cat > file.txt
    lekogabi@lekogabi:~$ fg %1
    cat > file.txt
    world
    ^Z
    [1]+  Megállítva            cat > file.txt
    lekogabi@lekogabi:~$ jobs
    [1]+  Megállítva            cat > file.txt
    lekogabi@lekogabi:~$ kill %1
    
    [1]+  Megállítva            cat > file.txt
    lekogabi@lekogabi:~$ jobs
    [1]+  Befejeződött          cat > file.txt
    lekogabi@lekogabi:~$ jobs
    lekogabi@lekogabi:~$
    

    Beleírtunk egy sort a file.txt-be, majd leállítottuk (Ctrl+c) a folyamatot. Aztán ismét írtunk bele egy sort, viszont ekkor csak szüneteltettük (Ctrl+z) a folyamatot. jobs paranccsal lekértük az aktuális job-okat, ahol látható az előbbi fájlba írás folyamatunk. fg paranccsal "vissza hívtuk" a job-ot. Ismét írtunk bele egy sort, majd várakozni küldük és a következő lépésben a kill paranccsal "kilőttük" a folyamatot. Ezután a jobs paranccsal lekérdezve már látható, hogy a fájlba írás teljes egészében leállt.

  • &

  • Ha egy progamot a háttérben akarunk futtatni, akkor a futtatandó program neve után egy & jelet kell tenni. pl.:

    lekogabi@lekogabi:~$ gedit&

    A fenti parancs hatására megnyílik a szövegszerkesztő a háttérben.



Házi feladat

A házi feladatot megoldani nem kötelező és bemutatni sem kell, viszont a következő gyakorlaton visszakérhető (kikérdezés, táblához hívás, stb. formájában)! Ha a hallgató megoldása ötletes, szép kivitelezésű, plusz pont adható. Amennyiben viszont nem tudja megoldani gyakorlaton a házi feladatban szereplő példákat vagy nem tud válaszolni az azzal kapcsolatban feltett kérdésekre, mínusz pont adható. Plusz és mínusz pontból is egyaránt maximum 10 pontot gyűjthet össze egy-egy hallgató.

Házi feladat letöltése .

További gyakorló feladatok találhatóak a PUB-ban. ( /n/pub/ProgramozasAlapjai/Gyakorlat/ )

     Vissza a lap tetejére.