Programozás alapjai gyakorlat 2014-2015/1

2. gyakorlat


Linux alapok 2/2

Továbbra is a Linux operációs rendszer alapparancsaival ismerkedünk. A gyakorlat anyaga az előző gyakorlathoz hasonlóan a Linux gyakorlati jegyzetem összeállítása alapján fog haladni. Ma átvesszük a jegyzet második felét


Szövegfájlok

  • echo

  • Az utána lévő szöveget írja ki a képernyőre. A szóközöket a "\<szóköz>" segítségével lehet beszúrni. Vagy ha az egész szöveget "" közé tesszük, akkor az kerül a képernyőre ami az "" között van. pl.:

    lekogabi@lekogabi:~$ echo hello
    hello
    lekogabi@lekogabi:~$ echo "hello Kitty!"
    hello Kitty!
    

    Változók is előállíthatóak az echo segítségével egy plussz '$' jel használatával. pl.:

    lekogabi@lekogabi:~$ echo $asd
    (semmi)
    lekogabi@lekogabi:~$ asd="hello"
    lekogabi@lekogabi:~$ echo $asd
    hello
    lekogabi@lekogabi:~$ unset asd
    lekogabi@lekogabi:~$ echo $asd
    (semmi)
    

    Létrehoztunk egy 'asd' nevű változót, amely kezdetben üres. Majd bele tettük a "hello" szöveget, majd az 'unset' parancs segítségével töröltük.

  • set

  • Kiírja az összes környezeti változót és az értéküket.

  • cat <fájl>

  • Paraméter nélkül írhatunk a képernyőre és Enter leütése után kiírja az addig beírt sort. Fájl paraméter esetén kiírja a fájl tartalmát a képernyőre. Ha "cat > szövegfájl" kombinációt használjuk, akkor a konzolra írt sorokat a szövegfájlba menti, ha >>-t írunk > helyett, akkor pedig a sorokat hozzáfűzi a fájl végéhez. pl.:

    lekogabi@lekogabi:~/Dokumentumok$ cat
    hello
    hello
    ^C
    lekogabi@lekogabi:~/Dokumentumok$ cat > file.txt
    first
    ^C
    lekogabi@lekogabi:~/Dokumentumok$ cat file.txt
    first
    lekogabi@lekogabi:~/Dokumentumok$ cat >> file.txt
    second
    ^C
    lekogabi@lekogabi:~/Dokumentumok$ cat file.txt
    first
    second
    

    Először kiírtuk a képernyőre, hogy "hello", majd a 'file.txt'-be bele írtuk a "first" sort. Aztán ezt kiírattuk a képernyőre, majd hozzáfűztük ugyanehhez a fájlhoz a "second" sort és kiírattuk.

    Cat és a job műveletek használata, pl.:

    lekogabi@lekogabi:~$ cat
    hello
    hello
    ^Z
    [1]+  Megállítva            cat
    lekogabi@lekogabi:~$ jobs
    [1]+  Megállítva            cat
    lekogabi@lekogabi:~$ fg %1
    cat
    hi    
    hi
    ^Z
    [1]+  Megállítva            cat
    lekogabi@lekogabi:~$ jobs
    [1]+  Megállítva            cat
    lekogabi@lekogabi:~$ kill %1
    
    [1]+  Megállítva            cat
    lekogabi@lekogabi:~$ jobs
    [1]+  Befejeződött          cat
    lekogabi@lekogabi:~$ jobs
    lekogabi@lekogabi:~$ 
    
  • more

  • A fájl tartalmát oldalanként írja ki a képernyőre. ('Space' leütésével lehet léptetni.)

  • head [kapcsoló]<fájl>

  • Kiírja a fájl a bizonyos sorait a képernyőre.

    Kapcsolók:

        -n <szám>: az első "szám" számú sort írja ki.

        -szám: az első "szám" számú sort írja ki

  • tail [kapcsoló]<fájl>

  • Kiírja a fájl a bizonyos sorait a képernyőre.

        -n <szám>: az utolsó "szám" számú sort írja ki.

        -szám: az utólsó "szám" számú sort írja ki

        -f: folyamatosan bővülő fájl tartalmát írja ki.

  • head, tail és head|tail pl.:

  • lekogabi@lekogabi:~/Dokumentumok$ cat file2.txt
    elso
    masodik
    harmadik
    negyedik
    otodik
    hatodik
    hetedik
    nyolcadik
    kilencedik
    tizedik
    lekogabi@lekogabi:~/Dokumentumok$ head -4 file2.txt
    elso
    masodik
    harmadik
    negyedik
    lekogabi@lekogabi:~/Dokumentumok$ tail -2 file2.txt
    kilencedik
    tizedik
    lekogabi@lekogabi:~/Dokumentumok$ head -9 file2.txt | tail -3
    hetedik
    nyolcadik
    kilencedik
    
  • wc [kapcsoló]<fájl>

  • Kiírja a fájl sorainak a számát, szavainak a számát, betűinek a számát és a fájl nevét.

    Kapcsolók:

        -l: csak a nevet és a sorok számát írja ki.

        -w: csak a nevet és a szavak számát írja ki.

        -c: csak a nevet és a byte-ok számát írja ki.

        -m: csak a nevet és a betűk számát írja ki.

    pl.:

    lekogabi@lekogabi:~/Dokumentumok$ wc file2.txt
    10 10 83 file2.txt
    lekogabi@lekogabi:~/Dokumentumok$ wc -l file2.txt
    10 file2.txt
    
  • ^D

  • Ctrl+d parancs megszünteti a bemenetet vagy kilép a terminálból (vagy shell programból)

  • /dev/null

  • Egy speciális fájl, amely minden beleírt adatot töröl, miközben az írasi művelet sikeres. Az eszközből való olvasás nem ad vissza semmilyen adatot, eredménye azonnali EOF, azaz fájl vége. Felfogható adatnyelő eszközként ("fekete lyuk"). A null eszközt tipikusan folyamatok kimeneti stream-jeinek eltüntetésére használják, vagy az üres bemenet biztosítására, általában átirányítás segítségével. pl.: OpenGL: ./LekoGabor > /dev/null

  • Beépített környezeti változók:

  • $PWD: Tárolja az aktuális elérési útvonalat.

    $HOME: Tárolja a home könyvtár abszolút elérési útvonalát.

    $SP1: A prompt kinézetét leíró kifejezést tárolja.

    $PATH: A keresési könyvtárak elérési útvonalát tárolja, itt keresi a parancsokat.

    ~: Nem környezeti változó, de a home könyvtár elérési útvonalát tárolja.


Mintaillesztés

    Ha nem tudjuk egy szöveg pontos alakját, csak egy részét, vagy több szövegrészlettel szeretnénk egyszerre dolgozni, akkor jön jól a mintaillesztés. Használható pl. egyszerre több fájl törlésénél, vagy keresésnél (fájlban, vagy fájlrendszerben).

    Speciális karakterek:

        ? - pontosan egy karaktert helyettesít: pl. ?lma lehet alma vagy álma is így.

        * - bármennyi (akár 0) karaktert helyettesít: pl. *gép lehet gép, mosógép, számítógép, stb.

        [...] - a [] között felsorolt karakterekből pontosan egyet helyettesít: pl. [aó]lom lehet ólom vagy alom, fajl[0123456789] pedig fajl0, fajl1, ... fajl9.

    pl.:

    Az összes .txt végződésű fájl kilistázása:

    lekogabi@lekogabi:~$ ls *.txt

    Minden .png fájl átmásolása a Dokumentumok/hello mappába:

    lekogabi@lekogabi:~$ cp *.png /home/lekogabi/Dokumentumok/hello

    Az összes .png kép törlése a Dokumentumok/hello mappából:

    lekogabi@lekogabi:~/Dokumentumok/hello$ rm *.png
  • grep [kapcsoló][minta]<fájl>

  • Kiírja egy fájl azon sorait, amelyekben szerepel a minta szövegrészlet.

    Kapocsolók:

        -A # : # db sor kiírása az illeszkedő sorok után.

        -B # : # db sor kiírása az illeszkedő sorok előtt.

        -C # : # db sor kiírása az illeszkedő sorok előtt és után.

        -e minta : minta megadása; segítségével több minta is megadható, illetve akkor is jó, ha a minta a - karakterrel kezdődik.

        -r, -R: könyvtárak feldolgozása rekurzívan.

        -v: azon sorait írja ki, amik nem tartalmazzák a minta szövegrészletet.

    pl.:

    lekogabi@lekogabi:~/Dokumentumok$ grep hat file2.txt
    hatodik
    lekogabi@lekogabi:~/Dokumentumok$ grep ed file2.txt
    negyedik
    hetedik
    kilencedik
    tizedik
    lekogabi@lekogabi:~/Dokumentumok$ grep -v ed file2.txt
    elso
    masodik
    harmadik
    otodik
    hatodik
    nyolcadik
    lekogabi@lekogabi:~/Dokumentumok$ 
    

Átirányítások és parancsok láncolása

  • parancs > szövegfájl

  • A parancs kimenete a konzol helyett a fájlba fog íródni, a fájl addigi tartalma elvész. pl.:

    lekogabi@lekogabi:~/Dokumentumok$ ls -l > file.txt
    lekogabi@lekogabi:~/Dokumentumok$ cat file.txt
    -rw-r--r-- 1 lekogabi lekogabi      83 aug    9 21:01 file2.txt
    -rw-r--r-- 1 lekogabi lekogabi       0 aug   13 19:10 file.txt
    drwxr-xrwx 2 lekogabi lekogabi    4096 aug    9 15:07 hello
    -rw-r--r-- 1 lekogabi lekogabi   15796 aug   13 19:09 progalap_linux
    
  • parancs >> szövegfájl

  • A parancs kimenete a konzol helyett a szövegfájl végéhez fog hozzáfűződni. pl.:

    lekogabi@lekogabi:~/Dokumentumok$ ls > file.txt
    lekogabi@lekogabi:~/Dokumentumok$ cat file.txt
    -rw-r--r-- 1 lekogabi lekogabi      83 aug    9 21:01 file2.txt
    -rw-r--r-- 1 lekogabi lekogabi       0 aug   13 19:10 file.txt
    drwxr-xrwx 2 lekogabi lekogabi    4096 aug    9 15:07 hello
    -rw-r--r-- 1 lekogabi lekogabi   15796 aug   13 19:09 progalap_linux
    file2.txt
    file.txt
    hello
    progalap_linux
    
  • parancs < szövegfájl

  • A parancs bemeneteként kapja a szövegfájl tartalmát.

  • parancs1 | parancs2

  • A parancs1 kimenete konzolra kiírás helyett a parancs2 bemenete lesz. pl.:

    lekogabi@lekogabi:~/Dokumentumok$ cat file2.txt
    elso
    masodik
    harmadik
    negyedik
    otodik
    hatodik
    hetedik
    nyolcadik
    kilencedik
    tizedik
    lekogabi@lekogabi:~/Dokumentumok$ head -9 file2.txt | tail -3
    hetedik
    nyolcadik
    kilencedik
    
  • parancs1 && parancs2

  • A parancs1 végrehajtása után a parancs2 csak akkor hajtódik végre, ha a parancs1 hiba nélkül futott le. pl.:

    lekogabi@lekogabi:~/Dokumentumok$ mkdir ujmappa && rmdir ujmappa

    Ha létre tudta hozni az 'ujmappa' nevű könyvtárat, akkor ki is törli a második paranccsal.

  • parancs1 || parancs2

  • A parancs1 végrehajtása után a parancs2 csak akkor hajtódik végre, ha a parancs1 futása közben hiba történt. pl.:

    lekogabi@lekogabi:~/Dokumentumok$ rm -r ujmappa || mkdir ujmappa

    Megpróbáljuk törölni az 'ujmappa' nevű könyvtárat. Mondjuk még nincs ilyen könyvtár, akkor hiba üzenetet kapunk, majd létrejön az 'ujmappa' nevű könyvtár.

  • parancs1;parancs2;parancs3

  • A parancsok ";"-vel elválasztva egymás után hajtódnak végre balról jobbra.

    lekogabi@lekogabi:~/Dokumentumok$ mkdir ujmappa; cd ujmappa; ls -l
    összesen 0
    lekogabi@lekogabi:~/Dokumentumok/ujmappa$
    

Linux hálózatok

  • scp <felhasználónév>@<szerver>:<távoli útvonal><helyi útvonal>

  • Átmásol egy bizonyos fájlt vagy könyvtárat a "távoli útvonal"-ról a "helyi útvonal"-ra. pl.:

    lekogabi@lekogabi:~$ scp h165057@linux.inf.u-szeged.hu:/n/pub/ProgramozasAlapjai/tematika-2013.txt ./
    h165057@linux.inf.u-szeged.hu's password: 
    tematika-2013.txt                             100% 3659     3.6KB/s   00:01
    
  • ssh [kapcsoló]<felhasználónév>@<szerver>

  • Csatlakozni lehet a szerverre, futtatni konzolos programokat.

        -X: Ezzel a kapcsolóval grafikus programot is indíthatunk.

    pl.:

    lekogabi@lekogabi:~$ ssh h165057@linux.inf.u-szeged.hu
    h165057@linux.inf.u-szeged.hu's password: 
    Linux linux1.inf.u-szeged.hu 3.2.0-4-686-pae #1 SMP Debian 3.2.54-2 i686
    
     ******************************************************************************
     *         Udvozoljuk az Informatikai Tanszekcsoport linux szerveren!         *
     *                                                                            *
     * A szerver azt a celt szolgalja, hogy tavoli bejelentkezes eseten ugyanazt  *
     * a kornyezetet biztositsa, amit egy tanteremben levo munkaallomas biztosit. *
     *                                                                            *
     * A szerver mukodesevel, a bejelentkezessel kapcsolatos problemaikat kerjuk  *
     *                a kabinet@inf.u-szeged.hu cimen jelezzek.                   *
     ******************************************************************************
    
    Last login: Sun May  4 21:38:49 2014 from 79.101.5.52
    h165057@linux1:~$ cd LekoGabor
    h165057@linux1:~/LekoGabor$ make
    make: Nothing to be done for `application'.
    h165057@linux1:~/LekoGabor$ ./LekoGabor
    freeglut (./LekoGabor): failed to open display ''
    h165057@linux1:~/LekoGabor$ exit
    kijelentkezés
    Connection to linux.inf.u-szeged.hu closed.
    lekogabi@lekogabi:~$ ssh -X h165057@linux.inf.u-szeged.hu
    h165057@linux.inf.u-szeged.hu's password: 
    Linux linux1.inf.u-szeged.hu 3.2.0-4-686-pae #1 SMP Debian 3.2.54-2 i686
    
     ******************************************************************************
     *         Udvozoljuk az Informatikai Tanszekcsoport linux szerveren!         *
     *                                                                            *
     * A szerver azt a celt szolgalja, hogy tavoli bejelentkezes eseten ugyanazt  *
     * a kornyezetet biztositsa, amit egy tanteremben levo munkaallomas biztosit. *
     *                                                                            *
     * A szerver mukodesevel, a bejelentkezessel kapcsolatos problemaikat kerjuk  *
     *                a kabinet@inf.u-szeged.hu cimen jelezzek.                   *
     ******************************************************************************
    
    Last login: Wed Aug 13 21:12:17 2014 from 79.101.5.234
    h165057@linux1:~$ cd LekoGabor/
    h165057@linux1:~/LekoGabor$ make
    make: Nothing to be done for `application'.
    h165057@linux1:~/LekoGabor$ ./LekoGabor > /dev/null
    
  • sftp <felhasználónév>@<szerver>

  • Csatlakozik a szerverre és lehetőségünk van lépkedni a szerver könyvtáraiban, illetve a lokális könyvtárunkban, majd leszedni illetve feltölteni bizonyos adatokat.

    Egy 'l' betű hozzáadásával tudjuk közölni a géppel, hogy nem a szerveren szeretnék, hogy végrehajtódjon az adott parancs, hanem a lokális gépen. pl.:

        ls - lls, pwd - lpwd, cd - lcd, mkdir - lmkdir.

        put - fájl átmásolása a lokális gépről a szerver gépre class="prelinux".

        get - fájl átmásolása a szerver gépről a lokális gépre class="prelinux".

        exit - kilép a szerverről.

    pl.:

    lekogabi@lekogabi:~$ sftp h165057@linux.inf.u-szeged.hu
    h165057@linux.inf.u-szeged.hu's password: 
    Connected to linux.inf.u-szeged.hu. 
    sftp> cd ..    
    sftp> cd ..   
    sftp> cd pub                                                      
    sftp> cd ProgramozasAlapjai/   
    sftp> get tematika-2012.txt
    Fetching /n/pub/ProgramozasAlapjai/tematika-2012.txt to tematika-2013.txt
    /n/pub/ProgramozasAlapjai/tematika-2012.txt   100% 3659     3.6KB/s   00:00    
    sftp> exit
    lekogabi@lekogabi:~$
    


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 .

Elgondolkodtató feladatok letöltése .

További gyakorló feladatok letöltése .

Előző heti házi feladat megoldásának letöltése .

     Vissza a lap tetejére.