Programozás alapjai gyakorlat 1. gyakorlat
Bemutatkozás Bordé Sándor Email cím: borde@inf.u-szeged.hu csak stud-os címről (ld. később) Webcím: http://www.inf.u-szeged.hu/~borde Egyéb: coospace fórum, neptun körüzenet Fogadóóra: e-mailben előre egyeztetett hely és időpont
Óra menete Tűz- és munkavédelmi napló megismerése, aláírása Követelmények ismertetése Első lépések: stud regisztáció, h-s azonosító, jelszóváltás Linux alapok
Számonkérések 8db 20-45 perces mini ZH a félév során (4db 5 és 4db 10 pontos), összesen 60 pont érhető el Programrészletek írása órán, hálózatról lekapcsolt gépeken, automatikus kiértékeléssel 1db egészórás nagy ZH félév végén, 20 pontért Teljes program megírása órán, hálózatról lekapcsolt gépeken Előre ismertek a lehetséges feladatok, amit helyben önállóan kell megírni
Számonkérések Kötelező házik Minden órához tartoznak kötelező házi feladatok Ezeket otthon mindenkinek meg kell oldani Következő óra elején 15-20 percben együtt átnézzük Ezekre lehet plusz vagy minusz pontot szerezni Összesen 10 pont szerezhető Gyakorló feladatok
Minimum pont Mini ZH: 60-ból legalább 15, javítás/pótlás nincs Nagy ZH: 20-ból legalább 5 pont Mini ZH + Nagy ZH + órai munkáért járó pontok összege minimum 30 Ha nincs meg, lehet javítani a nagy ZH-t Ha megvan, akkor is javítható a nagy ZH, de ha romlik az eredmény, az lesz az aktuális!
Első lépések Regisztráció a stud oldalon https://www.stud.u-szeged.hu/web/studreg-1.php Email címhez tartozó jelszó megváltoztatása Email küldése nekem, benne a név, neptun kód és a h-s azonosító Kabinetes jelszó megváltoztatása http://www.inf.u-szeged.hu/jelszo Kipróbálni a távoli meghajtónk mountolását és unmountolását
Linux alapok Könyvtárszerkezet Hierarchikus, fa struktúrájú, root (gyökér) könyvtár Aktuális könyvtár: ahol éppen vagyunk, mindig ez az alapértelmezett, ha külön nem jelöljük Útvonal lehet abszolút vagy relatív Abszolút a root (gyökér) könyvtártól számít Relatív az aktuális könyvtártól
Linux alapok Speciális könyvtárnevek / a gyökér könyvtár ~ a home könyvtár. az aktuális könyvtár.. a hierarchiában eggyel feljebb lévő könyvtár Aminek a neve ponttal kezdődik (pl.firefox), az rejtett
Linux parancsok A parancsok felépítése [parancs neve] [kapcsolók] [paraméterek] Hogy melyik parancs mit tud, milyen kapcsolói vannak és hogy paraméterezhető, a man paranccsal kérdezhetjük le man cd A kapcsolókat és paramétereket szóközzel választjuk el A kapcsolókat írhatjuk egybe is (l. később)
Könyvtár parancsok pwd aktuális könyvtár abszolút útvonala cd <könyvtárnév> - átlép a megadott könyvtárba ls <kapcsolók> <lista> - kilistázza a <lista>-ban megadott fájlokat, illetve a megadott könyvtárak tartalmát -l részletes lista -a minden állomány (a rejtett is) -d ne a könyvtár tartalmát, hanem a nevét -R az alkönyvtárakat is (rekurzívan) -r fordított betűrendben
Könyvtár parancsok mkdir könyvtár létrehozása megadott névvel -p ha nincs, akkor létrehozza a szülő könyvtárakat is -m megadhatjuk a jogosultságokat is (l. később) rmdir kitörli a megadott könyvtárakat, ha üresek -p ha üres a könyvtár és az összes szülője is akkor törli mindet
Fájlmozgatás mv <kapcsoló> <régi> <új> - átnevezi (és áthelyezi) a régi fájlt az új névre -b ha volt már ilyen nevű, akkor másolatot készít mv <kapcsoló> <lista> <új hely> - áthelyezi a lista elemeit <új hely>-re -f kétes esetben nem kérdez vissza -i minden kétes esetben visszakérdez -u csak a régebbi fájlokat írja felül
Fájlmozgatás cp <kapcsoló> <régi> <új> - lemásolja a régi fájlt új névre -b ha volt már ilyen nevű, akkor másolatot készít cp <kapcsoló> <lista> <új hely> - átmásolja a lista elemeit <új hely>-re -f kétes esetben nem kérdez vissza -i minden kétes esetben visszakérdez -u csak a régebbi fájlokat írja felül -r (-R) ha könyvtárat másolunk, akkor alkönyvtárakkal együtt -l/-s linket készít másolat helyett (l. később)
Fájlműveletek rm <kapcsoló> <lista> - törli a listában megadott fájlokat -f kétes esetben sem kérdez -i kétes esetben megerősítésre vár -r (-R) ha könyvtár, akkor alkönyvtárakat is töröl file <fájlnév> - kiírja az adott fájl típusát
Jogosultságok Több felhasználó fontos a hozzáférés kezelése 3 osztály (user, group, others) és 3 jog (read, write, execution) Jog Könyvtár Fájl r - olvasás w - írás x - végrehajtás A könyvtár tartalma kilistázható A könyvtárban a bejegyzések módosíthatóak A hozzáférés engedélyezett, e nélkül nem lehet pl belépni sem a könyvtárba A fájl tartalma olvasható A fájl tartalma módosítható A fájl futtatható
Jogosultságok Megadása a chmod paranccsal Két módon chmod <jogosultság> <lista> Kinek/mit/hogy Oktális számjegyek
Jogosultságok kezelése Kinek/mit/hogy Kinek? U (user), G (group), O (others) Mit? W (write), R (read), X (execute) Hogy? + (megad), - (elvesz), = (beállít) Oktális számjegyekkel Olvasás = 4, írás = 2, végrehajtás = 1 Szerepenként összeadjuk a megadni kívánt jogok számértékeit, és minden szerepkörhöz tartozó számot egymás mellé írunk pl. chmod 777 Public
Linux alapok programok bemenete, kimenete Alapesetben az stdin (standard bemenet) a billentyűzet, az stdout (standard kimenet) pedig a terminál. A hibakimenet az stderr, ez is alapesetben a terminál. Ha a program bemenetet vár, de nem adunk meg neki, akkor nekünk kell azt begépelni, a végét pedig egy ^d (Ctrl+D) jellel jelölhetjük
Linux alapok programok bemenete, kimenete Ha nem billentyűzetből szeretnénk olvastatni, akkor a < jellel adhatunk meg fájlt bemenetként cat < be.txt be.txt > cat Ha nem a terminálba szeretnénk kiíratni, akkor a > jellel tehetjük meg Lehet egyszerre mindkettőt cat > ki.txt cat < be.txt > ki.txt
Linux alapok programok bemenete, kimenete Ha azt szeretnénk, hogy az előző adatok megmaradjanak, akkor a >> jelet kell használni cat >> ki.txt Lehetőség van arra, hogy a hibákat (stderr) is átirányítsuk cat 2> hiba.txt Ha mindkettőt egy helyre akarjuk küldeni cat &> kimenetek.txt
Linux alapok programok bemenete, kimenete Ha a kimenetet egy másik fájlnak szeretnénk továbbítani, használjuk a operátort program1 program2
Linux alapok - mintaillesztés Vannak bizonyos speciális karakterek/jelölések, melyek helyére az értelmező behelyettesít valamit? egy tetszőleges karakter állhat itt * bármennyi tetszőleges karakter lehet itt (akár 0) [ ] a helyére írt karakterek közül helyettesít ide \c a c speciális karaktert helyettesíti ide, ezek lehetnek \, szóköz, ',,?, *, [, ], `, \t Ha kiadunk egy parancsot, akkor az összes fájlra és könyvtárra érvényes lesz, amire illeszkedik a minta ls *.txt touch \*
Linux alapok mintaillesztés pl. alfa.? - minden alfa. kezdetű fájlra, aminek még van 1 karakter a végén start??.xml - start(két tetszőleges karakter).xml *.html - minden.html végződésű fájl (fontos a pont is!) *vector* - minden, amiben benne van a vector minta [Kk]epek - kepek vagy Kepek gcc-3.[0-3] - gcc-3.0, gcc-3.1, gcc-3.2, gcc-3.3 mintákra illeszkedik Egy\ nev\* - Egy nev* mintára illeszkedik?s\ [Ee]zek\ komb*t?ak?[a-z]okf*k?ppen fejtsd meg :) \?x\\* -?x\ mintákra illeszkedik, utána tetszőleges számú karakter lehet
Linux - multitasking Egyszerre több program is futhat a rendszeren A program futhat előtérben és háttérben Ha elindítunk egyet a bashben, addig ott nem tudunk mást csinálni, amíg a program nem végez Megszakíthatjuk ^c jel küldésével (Ctrl + C) A ^z jel szintén megállítja, de csak felfüggeszti, tehát később folytatható (fg parancs), leállítható vagy háttérbe küldhető
Linux - multitasking Egy parancsot indíthatunk egyből a háttérben a & jellel de csak akkor, ha nincs szüksége az stdin-re és stdout-ra pl. cp nagy_fajl.zip ujhely/nagy_fajl.zip & Ha a parancsnak van kimenete, de nem vagyunk kíváncsiak rá, átirányíthatjuk a /dev/null -ba vagy egy direkt erre fenntartott fájlba (nohup.out) firefox > /dev/null & nohup firefox &
Linux - multitasking Egy futó programot processnek (folyamatnak) nevezünk egy job egy vagy több processnek felel meg Minden processnek van azonosítója (PID) Futó processek listája a ps paranccsal kapható -e minden process -f minden információ -u <user> csak az adott felhasználó folyamatai
Linux - multitasking A saját processeinket meg is szakíthatjuk a kill paranccsal -s <signal> <PID> - küldünk egy signal jelet a PID azonosítójú processznek -s 9 <PID> - küld egy KILL jelet a processnek: hagyd abba amit csinálsz most azonnal (adatvesztés lehetséges) -s 15 <PID> - küld egy TERM jelet a processnek: állítsd le magad most rendesen (biztonságosabb), ezt küldjük, ha a kill parancsnak nem adunk kapcsolót
Linux alapok - Több program indítása egymás után Ha több programot szeretnénk egymás után végrehajtani, megadhatjuk őket egyszerre is ; egymás után mindenképp lefut && a következő csak akkor fut le, ha az előző sikeres volt a következő csak akkor fut le, ha az első nem sikerült ld. előző diák
Linux alapok szövegek kezelése echo <szöveg> - kiírja a képernyőre a szöveget -n nem tesz új sor karaktert ( entert ) a végére -e escape szekvenciák értelmezésének bekapcsolása cat <fájl> - kiírja a fájl tartalmát a képernyőre paraméter nélkül mi gépeljük be a szöveget, amit kiír -n megszámozza a sorokat
Linux alapok szövegek kezelése more <fájl> - kiírja a fájl tartalmát, de oldalanként less <fájl> - ugyan az, csak lehet visszafele is lapozni, q-val kilépünk head -n <N> <fájl> - kiírja a fájl első N sorát tail -n <N> <fájl> - kiírja a fájl utolsó N sorát +N N. sortól kezdve írja ki a végéig -f ha változik a fájl tartalma, kiírja ismét
Linux alapok hálózati parancsok Egy adott gépről egy másik (távoli) gépre két módon jelentkezhetünk be hálózaton keresztül Ssh ekkor használhatom a távoli gépet, de csak azt, így nem tudok fájlokat mozgatni Sftp ekkor csak a távoli gép háttértárához férek hozzá, így tudok fájlokat mozgatni (de mást nem)
Linux alapok- hálózati parancsok Ha bent vagyunk egy gépen, onnan hálózaton keresztül egy másikra is be tudunk jelentkezni ssh azonosító@számítógépcím Ha ugyan az a felhasználónevünk a két gépen, akkor az azonosító@ rész elhagyható Belépés után ugyan úgy használhatjuk a terminált, mint a saját gépünkön (figyelembe véve, hogy a távoli gépen mi elérhető) Kilépni az exit paranccsal lehet
Linux alapok- hálózati parancsok Ha bent vagyunk egy gépen, onnan hálózaton keresztül egy másikra is be tudunk jelentkezni sftp azonosító@számítógépcím Ha ugyan az a felhasználónevünk a két gépen, akkor az azonosító@ rész elhagyható Belépés után ugyan úgy használhatjuk a terminált, mint a saját gépünkön (figyelembe véve, hogy a távoli gépen mi elérhető) Kilépni az exit paranccsal lehet
Linux alapok sftp parancsok Sok parancs működik távoli és a saját gépen is, ezt az l betűvel tudom elkülöníteni cd távoli gépen könyvtár váltás, lcd helyi gépen könyvtár váltás Ugyan így ls, lls pwd, lpwd mkdir, lmkdir rm, rmdir bye, exit kapcsolat megszakítása get letöltés távoli helyről az aktuális helyi könyvtárba put feltöltés az aktuális helyről az aktuális távoli könyvtárba ascii, binary üzemmódok közötti váltás
Linux alapok scp Biztonságos távoli másolás Úgy működik, mint a cp, csak a forrás vagy cél a távoli gép A távoli hely elé még oda kell írni az azonosító@távoligépcím: részt, utána jöhet a könyvtár