| Előadás | Szerda 14.00-16.00 | Déli Tömb 0-804, Lóczy Lajos előadó | 
| Gyakorlat | Hétfő 13.30-15.00 | Déli Tömb 0-221 | 
| Mentorálás | Hétfő 15.15-16.00 | Déli Tömb 0-221 | 
| Előadó | Fóthi Ákos | ||
| Gyakorlatvezető | Riskó Gergely | progalap@risko.hu | +36-20-340-8772 | 
| Mentor | Emil Vatai | vatai@inf.elte.hu | 
| -60 | elégtelen | 
| 61-90 | elégséges | 
| 91-120 | közepes | 
| 121-150 | jó | 
| 151-170 | jeles | 
| 170- | kitűnő | 
Bármilyen csalás felfedezése esetén az érintettek csalás által érintett teljesítése (pl. zárthelyi esetén a dolgozat, házi feladat esetén az adott házi feladat) meg nem írtnak számít és a hallgató a jeles vagy kitűnő jegy megszerzésének lehetőségétől elesik. Különösen kirívó (pl. más valaki jön zh-t írni) vagy ismétlődő esetben a csalás tényét az egyetem illetékes személyeinek is jelzem.
A gyakorlatot, mivel azon folyamatos számonkérés van, gyakorlati utóvizsgával teljesíteni nem lehet.
tar xvf nevnap.tar; cd nevnap; sort <nevnap.txt >rendezett.txt
tar cvfz nagy.tar.gz nagy
errge@pandora:~$ ./napok
   2115 Fri
   2344 Mon
    970 Sat
   1095 Sun
   1881 Thu
   2124 Tue
   1871 Wed
  (2 pont)
last | head -n -2 | cut -c 40-43 | sort | uniq -c
last | tee last.txt | head -n -2 | cut -c 40-43 | sort | uniq -c
cat xor.asm | fgrep syscall | wc -l
cat vonat.txt | fgrep Budapest: | fgrep -v :Budapest | cut -d: -f2 | sort | uniq
cat vonat.txt | fgrep -v Budapest | cut -d: -f3 | sort
cat vonat.txt | fgrep :Szeged | cut -d: -f1 | sort | uniq | wc -l
#!/bin/sh
FILE=vonat.txt
if [ "$2" != "" ]
then
        echo Egy parametert kell megadni
        exit 2
fi
if [ "$1" != "" ]
then
        FILE=$1
fi
if [ -f $FILE ]
then
        cat $FILE | fgrep Budapest: | fgrep -v :Budapest | cut -d: -f2 | sort | uniq
else
        echo Hibas file: $FILE
        exit 1
fi
errge@pandora:~$ ./legkevesebben.sh Nap: Oct 1 Bejelentkezések: 429A mai napot ne vedd figyelembe, ugyanis kora reggel futtatva úgy mindig a mai nap jönne ki legkevesebb belépésre!
#!/bin/sh last | head -n -2 | cut -c 44-49 | uniq -c | tail -n +2 | sort -n | head -n 1 | sed 's/^ *\([0-9]\+\) \(.*\)$/Nap: \2\nBejelentkezések: \1/'
#!/bin/sh
if [ "$1" = "" ] || [ "$2" != "" ] || [ -e "$1" ]
then
        echo "Hibas parameterek"
        exit 1
else
        echo RIGHAAT.ELTE >$1
        chmod 0400 $1
fi
$ cat nevsor.txt GIJOAAI:gipsz:Gipsz Jakab :5:7:7:2 KOVOABI:jsmith:Kovács Vanessa :3:3:6:7 TOTLAAI:tototto:Tót Ottó :4:2:7:4Azaz az első oszlopban van az ETR azonosító, a másodikban a pandorás felhasználói név, amit a teljes név követ és utána jönnek feladatsoronként az elért pontok. Az olvashatóság kedvéért a nevek mögé úgy írok szöközöket, hogy táblázatos forma adódjon. Az ETR kód első három betűje a névből adódik, a negyedik az évfolyamot jelzi valamiképpen (még nem sikerült megfejtenem teljesen :) ), az 5. és 6. betű akkor játszik szerepet ha ugyanazon évfolyamon az első három betű ütközne, a 7. betű a szakra vonatkozóan tartalmaz információt. A most először elsősök kódjában az évfolyam oszlopban O szerepel. A mentorok csak az elsős hallgatók adataira tartanak igényt. Írjunk parancsfájlt, ami a standard bemenetén kapott névsorból kiválogatja az elsősök sorait és azt változatlanul a képernyőre írja, hogy a mentornak elküldhető legyen. A parancs neve legyen mentornak.sh és csatold a levélhez! (3 pont)
#!/bin/sh grep '^...O'
$ ./anonim.sh nevsor.txt GIJOAAI:XXXXXXXXXXXXXXXXXXXXXX:5:7:7:2 KOVOABI:XXXXXXXXXXXXXXXXXXXXXX:3:3:6:7 TOTLAAI:XXXXXXXXXXXXXXXXXXXXXX:4:2:7:4Ez a parancsfájl (amit anonim.sh néven csatolj a levélhez) most ne a bemenetén várja az inputot, hanem az paraméterben kapott fájlnevet használja, ha az létezik. Ha nem létezik, akkor írjon ki hibaüzenetet! (4 pont)
#!/bin/sh
if [ "$1" = "" ] || [ "$2" != "" ] || ! [ -f "$1" ]
then
        echo "Hibas parameterek"
        exit 1
else
        cat $1 | sed 's/^\([A-Z]\{7\}:\)[^:]\+:[^:]\+/\1XXXXXXXXXXXXXXXXXXX/'
fi
  #!/bin/sh cat vonat.txt | sed 's/:\([1-9]\)\./:0\1./g' >/tmp/vonat.txt.$$ mv /tmp/vont.txt.$$ vonat.txt
#!/bin/sh
if [ "$1" = "" ] || [ "$2" != "" ] || ! ( echo $1 | grep '^[1-9]$' >/dev/null )
then
        echo "Hibas parameterek"
        exit 1
else
        while read SOR
        do
                for i in $(seq 1 $1)
                do
                        echo -n "$SOR"
                done
                echo
        done
fi
  echo -n "itt egy sor" | sed 's/./\0\n/g'utasítást és vegyük észre, hogy ez pont az órai fuggoleges.sh feladatot oldja meg, csak kicsit rövidebb. Amennyiben az első sort további feldolgozáshoz függőlegesen szeretnéd kiírni, akkor ezt a trükköt is használhatod a korábbi fuggoleges.sh helyett.
#!/bin/sh
if [ "$1" = "" ] || [ "$2" != "" ] || ! [ -f "$1" ]
then
        echo "Hibas parameterek"
        exit 1
else
        SZAMJEGY=$(cat $1 | head -n1 | sed 's/./\0\n/g' | grep '[0-9]' | wc -l)
        KISBETU=$(cat $1 | head -n1 | sed 's/./\0\n/g' | grep '[a-z]' | wc -l)
        if [ $KISBETU -lt $SZAMJEGY ]
        then
               echo IGAZ
        else
               echo HAMIS
        fi
fi
  Írj UNIX parancsfájlt verzioszam.sh néven, aminek első paramétere egy tetszőleges sztring. A parancsfájl hozza létre az aktuális könyvtárban az első paraméterként kapott nevű fájlt (a névhez biggyesztve egy pontot és egy számot), a lehető legkisebb "verziószámmal". A verziószámok kiosztása 1-től indul. Pl. a ./verzioszam.sh alma parancs hozza létre az alma.1 fájlt, ha olyan még nem volt. Amennyiben pedig ha az alma.1, alma.2 és alma.4 is létezne, de alma.3 még nem, az új fájl neve legyen alma.3!
#!/bin/sh
NEV=$1
I=1
while [ -e "$NEV.$I" ]
do
        I=$((I+1))
done
touch "$NEV.$I"
Írj UNIX parancsfájlt emailcim.sh néven, ami az első paramétereként
kapott közönséges fájl sorai közül a standard output-ra írja azokat,
melyek pontosan egy formailag helyes emailcímet tartalmaznak, semmi
mást.
Formailag helyes egy emailcím, ha tartalmazza a @ (kukac) jelet.
Továbbá a kukac előtt csak kisbetűk, számjegyek és pontok lehetnek a
kukac utáni részben ugyanezek, de még kötőjelek is.  Emailcím csak
kisbetűvel, vagy számmal kezdődhet, ponttal (.) nem.  A kukac utáni
részben kell legyen legalább 1 pont, de az utolsó pont (.) után már
csak kisbetűk lehetnek, legalább egy legyen is.
#!/bin/sh
grep '^[a-z0-9][a-z0-9.]*@\([a-z0-9.-]\+\.\)\+[a-z]\{1,\}$' "$1"
Írj UNIX parancsfájlt jonevek.sh néven, ami az 1. paraméterként adott directoryban közvetlenül lévő fájlok közül kiírja azok nevét, melyek alakja unixPQR, ahol P, Q és R számjegyek, és még az is teljesül, hogy PQR, mint 3-jegyű szám hárommal osztható (megj.: 000 is 3-mal osztható szám).
#!/bin/sh
cd "$1"
shopt -s nullglob
for i in unix[0-9][0-9][0-9]
do
        if [ $(($(echo $i | cut -c 5-) % 3)) -eq 0 ]
        then
                echo $i
        fi
done
Írj UNIX parancsfájlt keretez.sh néven, ami paramétereit egyesével bekeretezi pont akkora kerettel, amibe a paraméter belefér. A keretnek a példában adott módon kell kinéznie. A bkeretezett sztringek közvetlenül egymás alatt legyenek:
./keretez.sh szilva "korte dio" +------+ |szilva| +------+ +--------------+ |korte dio| +--------------+
#!/bin/sh
while [ $# -ne 0 ]
do
        echo -n + ; echo "$1" | sed 's/./-/g' | sed 's/$/+/'
        echo "|$1|"
        echo -n + ; echo "$1" | sed 's/./-/g' | sed 's/$/+/'
        shift
done
Minden UNIX gépen van egy /etc/group fájl. Ennek tartalma ehhez hasonló:
ajtonallo::100:errge,lenart,vezerb felugyelo:x:120:bzsr,errge,heha,lenart,spala,vezerb fenymasolo::130:heha forgalmazo:x:90:bzsr gonoszkodo:x:105: nevsorozo::140:errge:spala
Minden sorban egymástól kettősponttal elválasztva sorrendben a
csoportnév, jelszó (ez többnyire hiányzik, vagy x betű van helyette),
csoportazonosító és a csoport tagjainak azonosítói vannak.  Utóbbiakat
, (tehát vessző) választja el egymástól.  Az is lehet, hogy az utolsó
mező, tehát a csoportot alkotó felhasználók listája hiányzik, ekkor a
csoportnak nincs egy tagja sem, a sor : jelre végződik (a példában az
utolsó előtti sor ilyen).
 Írj UNIX parancsfájlt csoport.sh néven,
ami kiírja azoknak a csoportoknak a nevét (csak a nevét!) a /etc/group
fájlból, amelyeknek legalább 2 tagja van.  (A példában a felugyelo
csoportnak például hat tagja van.)
#!/bin/sh grep -v ':[a-z]*$' /etc/group | cut -d: -f1