Villamosmérnöki és Informatikai Kar
Informatika Szak
Számítógépek Laboratórium
1998/99-es tanév I. félév

Zárthelyi dolgozatok

Az egyes dolgozatokra összesen 20 pontot lehet szerezni, a dolgozat megfelelt, ha legalább 10 pontot (50%) elért.

1. zárthelyi:
1998. október 28. szerda
1998. október 30. péntek


1. Kiszárthelyi

1998. október 28. szerda

  1. Mit csinál a következõ parancs?
    [2p]

    rm `head -1 kell`
  2. Megoldás:

    Letörli azokat az állományokat, amelyek a kell állomány elsõ sorában találhatók mint önálló (szeparált) szavak

  3. Az ls -la  parancs a következõ eredményt adja:

    dr-xr-xr-x 2 root    root  1024 Oct 28 01:00 .
    drwxrwxrwx 4 okoska  staff  1024 Oct 28 00:57 ..
    -rw-r--r-- 1 okoska  staff   110 Oct 28 01:00 111
    -rw-r--r-- 1 piroska staff  3451 Oct 28 00:58 alma
    -rwx-w-rw- 1 okoska  staff   575 Oct 28 00:59 butuska
    -rw-r--r-- 1 jani    staff  5557 Oct 28 00:58 korte
    -rw-r--r-- 1 okoska  staff 29991 Oct 28 00:58 ubora
  4. Törölheti-e az okoska felhasználó a butuska állományt?
    [2 p]

    Megoldás:

    Nem, mert a katalógusra nincs írási joga.

  5. Írjon olyan parancsot, amely kiírja az aktuális katalógusban levõ azon állományok nevét, melyek szimbolikus linkek.
    [2 p]
  6. Megoldás:

    ls -la | grep '^l'
  7. Írjon olyan teljes parancsállományt, amely az aktuális katalógusban megkeresi a ".hossz" nevû állományt, és amennyiben van ilyen, akkor ellenõrzi az abban felsorolt állományok hosszát! Ha eltérést tapasztal, akkor azt jelezze!
    A
    ".hossz" állomány minden sora egy állománynevet és szóközökkel elválasztva az adott állomány byte-jainak számát tartalmazza.
  8. Megoldás:

    #!/bin/sh
    if [ -r .hossz ]; then
      while read sor; do
        set not $sor; shift
        f=$1
        h=$2
        if [ -r $f ]; then
          set not `wc -c $f`; shift
          if [ $1 -ne $h ]; then
            echo "$f hossza kulonbozik ($h, $1)"
          fi
        else
          echo "$f nem letezik, vagy nem olvashato"
        fi
      done < .hossz
    fi


1998. október 30. péntek

  1. Mit csinál a következõ Bourne shell parancs?
    [2p]

    ls | (cd /tmp && cat > ls)
  2. Megoldás:

    Az aktuális katalógusban lefuttatja az ls parancsot, és annak outputját a /tmp/ls álományba írja, ha létezik a /tmp katalógus, és az írható.

  3. Tételezze fel, hogy az aktuális umask érték 27! Milyen védelmi jogokkal jön létre a következõ parancs során az állomány?
    [2p]

    echo zh > alma

  4. Megoldás:

    0666 & ~027 = 640, azaz -rw-r-----
  5. Írjon olyan parancsot, amely kiírja az aktuális katalógusból és annak alkatalógusaiból (részfa) azon normál állományok nevét, melyek módosítási ideje 3 napnál régebbi, vagy a tulajdonosuk az "okoska" felhasználó
    [2 p]
  6. Megoldás:

    find . -type f -a '( ' mtime +3 -o -user okoska ')' -print

  7. Írjon olyan teljes parancsállományt, amely ellenõrzi, hogy olvasható-e az aktuális katalógusban levõ ".menu" és a ".parancs" nevû állomány, majd kiírja a ".menu" tartalmát a képernyõre! Ezt követõen a script várjon egy sorszám megadására, és hajtsa végre a ".parancs" állomány megadott sorszámnak megfelelõ sorát! Ha nem létezõ sorszámot adtak meg, adjon hibajelzést!
    [14 p]
  8. Megoldás:

    #!/bin/sh
    if [ -r .menu -a -r .parancs ]; then
      cat .menu read n
      if [ ! "$n" ]; then
        echo hibas sorszam
        exit 1
      fi
      i=0;
      while [ $i -lt $n ] && read cmd; do
        i=`expr $i + 1`
      done < .parancs
      if [ $i -eq $n ]; then
        eval "$cmd"
        exit 0
      else
        echo hibas sorszam
        exit 1
      fi
    else
      echo a .menu vagy a .parancs nem letezik
      exit 1
    fi