Gyakorló feladatok

Egyszerűbb feladatok

  • Listázd ki, azt a 3 felhasználót, akik az utóbbi időben a legtöbbször jelentkeztek be a pandorára és azt is, hogy ők hányszor jelentkeztek be.
    Például:
      68 scsf
      59 qzy
      57 bzsr
    		
  • A PATH környezeti változóban található 2. könyvtár nevét írd bele a 'path.list' nevű fileba.
    (Természetesen a "megnézem, aztán kézzel beleírom" módszer nem jó, parancsot v. parancssorozatot kérek itt is. A path.list filet NE küldd el emailben!)
  • Listázd ki a /usr/bin könyvtárban található számmal (0-9) kezdődő, legalább 4 karakter hosszú fájlok neveit.
  • Alakítsd át az előző parancsot (parancsokat), hogy azt adja meg, hogy hány fenti tulajdonságú állomány van.
  • Irasd ki a képernyőre a $HOME/* szöveget. Pontosan ez a karaktersorozat jelenjen meg!
    (Plusz: a "$HOME/*" jelenjen meg a képernyőn. A " " jelek is!)
  • Készíts linux scriptet (parancsfilet), amely 3 parancssori paramétert vár. Az első paraméter egy szám, a második egy művelet jel (+,-,*,/), a harmadik ismét egy szám!
    A scriptnek el kell végezni a a két számon a megfelelő műveletet és az eredményt a stdout-ra írnia a példán látható formában.
    Példa:
    Meghívás: script1 3 + 5
    Kimenet: 3 + 5 = 8
    Megjegyzés: szorzás esetén feltehető, hogy script1 3 \* 5 vagy ezzel egyenértékű formában hívták meg a parancsfilet.
  • Írj parancsfilet, ami megadja, hogy az első paraméterként kapott könyvtárban hány darab olyan file van, melynek első karaktere a magyar ABC egy kisbetűje, utolsó karaktere pedig egy számjegy!
  • Írj parancsfilet, mely megmondja, hogy az utóbbi időben melyik napon jelentkeztek be a legtöbben. A kimenete például a következőképpen nézzen ki:
    		Nap: Oct   2 
    		Bejelentkezések száma: 1221
    		
    Segítség: a last parancs kimenetében minden sorban a 44-49. karakterek mutatják a napot. A kívánt kimeneti forma előállításához javaslom, hogy a "nyers" eredményt tegyük bele egy változóba, majd az első órán tanult módon ennek a változónak a tartalmából már könnyen "ketté tudjuk vágni" a két adatot.

Kicsit nehezebb feladatok

  • Írj parancsfilet, amely pontosan egy paramétert vár, ez a paraméter egy könyvtár! (Ellenőrzések és hibaüzenetek!!)
    Ha tényleg könyvtár, irjuk ki azokat a fileokat/könyvtárakat, melyekre van futtatási jogunk.
  • Írj parancsfilet, amely pontosan két paramétert vár! Ez a két paraméter egy-egy sztring. Írjuk ki egymás alá úgy a két sztringet, hogy a rövidebbet kipótoljuk * karakterekkel úgy, hogy egyenlő hosszúak legyenek!
    Pl: script6 alma "dio mogyoro"
    		alma*******
    		dio mogyoro
    		
  • Írj parancsfilet), amely kiirja azokat a bejelentkezett userereket (csak a nevüket), akinek a userneve ugyanazzal a betűvel végződik, mint a scriptet futtató neve !

Nehezebb feladatok

  • Az ls -l és a grep programok (és szabályos kifejezések) segítségével állíts össze egy parancssorozatot (pipe-ot), ami megoldja a következő feladatot (a pandorán):
    Az aktuális könyvtárban listázzuk azokat a reguláris (sima, hagyományos) fileokat, melyek a következő tulajdonságokkal rendelkeznek:
    • Tulajdonosa az éppen bejelentkezett felhasználó ($USER)
    • Utolsó módosítása 2006-ban volt
    • Neve betűvel (angol ABC kis/nagybetűje) kezdődik és valahol tartalmaz egy - karaktert

  • A sed program segítségével oldjuk meg az alábbi feladatot:
    Adott egy HTML állomány, alakítsuk át a következő feltételeknek megfelelően és az eredményt az XXX.html.min nevű fileba mentsük, ahol XXX az eredeti állomány neve:
    • Töröljük az összes <font ...> ... </font> taget!
    • Az <img ...> tagek helyett [ ] közé írjuk be a kép szöveges leírását!
      Pl. <img src="kacsa.jpg" alt="Kis kacsa" ...> -> [Kis kacsa]
      (Feltehető, hogy minden képnél az alt attribútum meg van adva)
    • Az összes <b>...</b>taget cseréljük <strong>...</strong> tagre

    Teszt állomány: proba.html Ennek a forrását kell felhasználni!
    Böngészőkben általába Nézet menüpont, Oldal forrása.

Összefoglaló feladatok

  • Mi az alábbi két Unix parancs sorozat hatása, ha egy üres directoryban végrehajtjuk? (unix1)

    umask 277 echo 477 > 177 ln 177 277 mv 277 777 chmod 600 777 echo 377 > 177 cat 177; cat 277; cat 777

    echo 377 >177 chmod 400 177 ln -s 177 277 umask 777 cat 277 >777 echo 477 >177 cat 177; cat 277; cat 777

  • Írjon Unix parancssorozatot, amely az akutális könyvtár (közvetlen) alkönyvtárai közül felsorolja azokat, amelyek nem üresek (unix1)
  • Írjon Unix parancsfilet, amely a paraméterként kapott file/directory nevek közül megadja, hogy hány valódi (azaz reguláris) file és hány könyvtár (unix1)
  • Írjon Unix scriptet, ami az üres aktuális directoryba kicsomagolja, a script paramétereként kapott nevű zip filet, majd a directoryvan keletkező fileokat egy ALDIR nevű aldirectoryba teszi. (Az alkönyvtárakkal nem csinál semmit.) Hibaüzenettel álljon le a program, ha az akutális könyvtár nem üres a script indulásakor. (unix2)
    Segítség: zip állományt kicsomagolni az unzip programmal lehet. Ld: man unzip
  • Írjon Unux scriptet, aminek a paramétere egy file neve. A megadott fileban fileok nevei vannak. Ezeket a fileokat kell (egymás után, mindenféle elválasztás nélkül) a képernyőre írni.
    (Ügyeljen arra, hogy az eleje is látható legyen, akkor is, ha nem fér a képernyőre az összes információ) (unix2)
  • Írjon Unix szűrőt, ami a paraméterként kapott file vagy a standard input alapján kiírja, hogy összesen mennyit fizetünk az internetezésért. Az input minden sora a következő alakú:
    éééé.hh.nn ó1:p1:m1-ó2:p2:m2
    (pl: "2004.12.04 09:56:59-10:08:04"), ahol a szóköz előtt a dátum, utána az internetezés kezdő- és végidőpontja található, egymástól "-" jellel elválasztva, mindegyik "óó:pp:mm" formában, ahol az "óó" az óra, "pp" a perc, "mm" a másodperc.
    Feltehetjük, hogy éjfélen áthúzódó intervallum nincs megadva, és hogy az adatok hibátlanok. Egy másodperc internetezés díja 10 fillér. (unix2)
  • Írjon Unix parancsfilet, ami a paraméterei közül a standard outputra írja a számokat (vagyis azokat, amik csak számjegyeket tartalmaznak), a standard error-ra pedig az összes többit (unix2)
  • Írjon Unix parancssorozatot, ami a 11-gyel osztható négyjegyű számokat egymás alá írja a standard outputra
    (Négyjegyű az a szám, ami 4 számjegyből áll, amik közül az első nem nulla.) (unix2)