1. Napisz skrypt, który co 10 sekund wyświetla na konsoli aktualną datę, godzinę i ilość użytkowników w historii programu who. Program ma zatrzymywać się tylko wtedy, gdy w katalogu programu znajdzie się plik o nazwie STOP. Przed zatrzymaniem program ma skasować plik STOP. Uruchom program odsyłając go do tła i zatrzymaj "dotykając" pliku STOP.

2. Napisz skrypt, który wchodzi do każdego podkatalogu release1, release2, release3 ... release9 (w katalogu roboczym), a następnie dodaje zawartość podfolderu "doc" do archiwum doc1.tar, doc2.tar, doc3.tar, ... doc9.tar, archiwa lokując w katalogu roboczym (tam, gdzie foldery release...). Uwzględnij sytuację, gdy katalogu releaseX nie ma.

3. Napisz program, który przekształci wszystkie pliki .gif z danego katalogu na pliki o takiej samej nazwie, lecz rozszerzeniu (i formacie) .png. Pamiętaj o usunięciu rozszerzenia .gif z nazwy. Rozszerzenie od nazwy oddziela kropka, zakładamy, że w nazwie nie ma innej kropki. Do konwersji użyj programu convert plik.gif plik.png.

4. Napisz program "del.sh", który przyjmuje w argumencie dowolną ilość plików. Pliki te przenoszone są do podfolderu ~/kosz/[data uruchomienia programu]. Uwzględnij przypadek gdy folder ~/kosz w ogóle nie istnieje. Datę pozyskaj poleceniem date '+%Y%m%d%H%M%S'. Po przeniesieniu wyświetl ilość przeniesionych plików.

5. Napisz program przyjmujący w parametrach dwie liczby całkowite (pierwsza<druga). Program wyświetla wpisy użytkowników z /etc/passwd o numerach ID (w pliku przechowywane w postaci ...x:ID:...) z przedziału zadanego tymi liczbami. Uwzględnij przypadek gdy użytkownik poda nieprawidłowe parametry.

6. Napisz skrypt, który sprawdzi, czy w komputerze występuje karta sieci bezprzewodowej (Wi-fi). Można to stwierdzić kodem błedu 0 dla polecenia ifconfig wlan0. Jeżeli występuje, uruchom program wicd w tle i zakończ skrypt (oczekujemy, że komputer podłączy się po Wi-fi). W przeciwnym przypadku sprawdź, czy komunikat wyjściowy polecenia ifconfig hme0 (hme0 - karta sieci przewodowej) zawiera słowo RUNNING. Jeżeli nie zawiera, wyświetl użytkownikowi komunikat o braku sieci i zakończ skrypt.



Odpowiedzi u dołu strony (co nie oznacza, że to jedyne rozwiązania).









































Odpowiedzi:
Zadanie 1.

#!/bin/bash
while true
do
        echo `date` bylo zalogowanych: `who -a | wc -l`
        sleep 10
        if [ -e ./STOP ]
        then
                rm ./STOP
                exit
        fi
done



Zadanie 2.
#!/bin/bash
x=0
while [ $x -lt 10 ]
do
        x=`expr $x + 1`
        if [ ! -d release$x ]
        then
                continue
        fi
        cd release$x
        tar cvf ./../doc$x.tar ./doc/*.*
        cd ..
done



Zadanie 3.
#!/bin/bash
for plik in *.gif; do
        png=`echo $plik | cut -d '.' -f 1`.png
        convert $plik $png
        rm $plik
done



Zadanie 4.
#!/bin/bash

if [ ! -d ~/kosz ]; then
        mkdir ~/kosz
fi  
date=`date '+%Y%m%d%H%M%S'`
mkdir ~/kosz/$date
k=0
for par in $*; do
        mv $par ~/kosz/$date/
        k=`expr $k + 1`
done
echo "Przeniesiono plikow: $k"



Zadanie 5.
#!/bin/bash
if [ $1 -gt $2 ]; then
        echo "Error!"
        exit
fi
n=$1
while [ $n -le $2 ]; do
        grep "x:$n:" /etc/passwd
        n=`expr $n + 1`
done



Zadanie 6.
#!/bin/bash
if ifconfig wlan0 >/dev/null 2>&1; then
        wicd &
        exit
else
        if [ -z "`ifconfig hme0 | grep RUNNING`" ]; then
                echo "Uwaga: Brak lacznosci na hme0"
                exit
        fi
fi

# w linii 2 >/dev/null 2>&1 nie musi występować - to dla kosmetyki (nie wyświetlają się błędy).