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
#!/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
#!/bin/bash for plik in *.gif; do png=`echo $plik | cut -d '.' -f 1`.png convert $plik $png rm $plik done
#!/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"
#!/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
#!/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).