%Wywolanie%
1. Napisz skrypt, który skompresuje gzipem wszystkie pliki o rozszerzeniu
podanym jako parametr tego skryptu. Skrypt powinien być odporny na
błędy i interaktywnie zapytać o rozszerzenie, gdyby nie podano go jako
parametr.
#!/bin/sh
if [ -z $1 ]; then
echo nie podales parametru chwieju, wpisz rozszerzenie:
read roz
else
roz=$1;
fi
for i in *.$roz; do gzip $i;
done
%sh nazwa_skryptu rozszezrzenie%
2. Zmodyfikuj skrypt z poprzedniego zadania tak, aby kompresował pliki z
rozszerzeniami podanymi jako parametry tego skryptu. Skrypt powinien
działać poprawnie dla dowolnej liczby parametrów (rozszerzeń).
#!/bin/sh
while [ -n "$1" ] ; do
for i in *.$1; do gzip $i;
done;
shift;
done
%sh nazwa_skryptu rozszeerzeni1 rozszerz2 …%
1. Opracuj skrypt, który przetwarzając kolejno wszystkie podkatalogi w
katalogu bieżącym odbierze prawo do zapisu katalogom, które to prawo
posiadają i nada takie prawo katalogom, które go nie posiadają.
#!/bin/sh
for i in *; do
if [ -d $i -a -w $i ]; then
chmod -w $i;
else
chmod +w $i;
fi
done
%sh nazwa_skryptu%
2. Napisz skrypt, który będzie sprawdzał czy jest uruchomiony program,
którego nazwa podawana jest jako parametr tego skryptu. Jeżeli program
działa, to skrypt nie podejmie żadnej akcji, jeżeli nie, skrypt powinien
uruchomić ten program i zapisać każdorazowo datę i godzinę
uruchomienia w pliku logu.
#!/bin/sh
if [ -z $1 ]; then
echo nie podales parametru
exit
fi
ps | grep $1 && echo program dziala || { $1; date>log; }
%sh nazwa_skryptu ls%
1. Napisz skrypt, który wyświetli uporządkowaną alfabetycznie,
ponumerowaną listę użytkowników o imieniu Adam posiadających konta na
serwerze student.
#!/bin/sh
ls /home | grep _adam | cat -n
%sh nazwa_skryptu%
2. Opracuj skrypt, który dla dowolnej ilości liczb będących parametrami tego
skryptu obliczy:
ich
sumę
podłogę
(część całkowitą) ich średniej arytmetycznej.
#!/bin/sh
a=$#
while [ -n "$1" ];
do
suma=$[ $suma + $1 ]
shift
done
echo "suma to: " $suma
podloga=$[ $suma / $a ]
echo "podloga to: " $podloga
%sh nazwa_skrypttu liczba1 liczba2%
1. Napisz skrypt, który zliczy w katalogu bieżącym liczbę plików o
rozszerzeniu podanym jako pierwszy parametr tego skryptu. Jeżeli liczba
plików przekroczy wielkość, która jest drugim, opcjonalnym parametrem
jego wywołania, to skrypt powinien zapisać ich listę do pliku, którego nazwa
jest trzecim parametrem wywołania skryptu. Uruchomienie skryptu bez
podania przynajmniej jednego parametru powinno zakończyć się
wyśiwtlenie m komunikatu o błędzie.
#!/bin/sh
if [ -z $1 ]; then
echo pozycz mnie dwu stów, bo nie ma parametrow
exit
else
j=0
for i in *.$1; do
j=$((j+1));
if [ "$j" -gt "$2" ]; then
ls *.$1 > $3
fi
done
fi
%sh nazwa_skryptu rozszerzenie liczba nazwa_pliku%
2. Opracuj skrypt, który obliczy podłogę (część całkowitą) średniej
arytmetycznej ilości rozpoczętych sesji logowań przypadających na
przeciętnego użytkownika serwera student w bieżącym miesiącu.
#!/bin/sh
A=`last | sort -k 1|cut -d " " -f 1|uniq| wc -l`
B=`last | wc -l`
echo liczba aktywnych uzytkownikĂłw: $A
echo liczba rozpoczetych sesji: $B
SREDNIA=`expr $B \/ $A`
echo $SREDNIA
%sh nazwa_skryptu%
1. Przygotuj skrypt, który działając w tle zlicza co 10 sekund liczbę
użytkowników pracujących na serwerze student. Gdy liczba użytkowników
(nie liczba aktywnych sesji) przekroczy wartość podaną jako parametr
wywołania skryptu, skrypt powinien zakończyć działanie wypisując tą
liczbę.
2. Napisz skrypt, który będzie sprawdzał czy jest uruchomiony program,
którego nazwa podawana jest jako parametr tego skryptu. Jeżeli program
nie działa, to skrypt nie podejmie żadnej akcji, jeżeli działa, skrypt powinien
zakończyć działanie tego program i zapisać każdorazowo datę i godzinę
zakończenia w pliku logu (Dla uproszczenia przyjmujemy, że nigdy nie
działa więcej niż jedna instancja śledzonego programu).