kl


Kolos:

1. Wypisz wszystkie pliki specjalne do pliku ktory jest pierwszym parametrem wywolania a ich ilosc wypisz do pliku ktory jest drugim parametrem wywolania

Kod:
#!/bin/bash

if [ $# == 2 ];then
zm=`find /dev -type b -o -type c`
zm1=`find /dev -type b -o -type c | wc -l`
echo "$zm" > $1
echo "$zm1"> $2

else
echo "Zla ilosc parametrow"
fi
exit 0

2. Wylistuj wszystkie pliki z katalogu bedącego 1. parametrem wywołania (oczywiscie na ekran). Oblicz liczbę podkatalogów znajdujacych sie w tym katalogu. Oblicz ilość plików zwykłych w tym katalogu i wpisz do pliku bedacym 2. parametrem wywołania. Sprawdz zajmowana przestrzen dyskowa przez ten katalog, wyslij na ekran i do pliku bedacego 3. parametrem wywołania.

#!/bin/bash

if [ $# == 3 ];then

ls $1 -l > plik
grep '^-' plik #listowanie plikow

zmienna=`grep '^d' plik | wc -l` #obliczanie ilosci katalogow
echo "ilosc katalogow $zmienna"

zmienna1=`grep '^-' plik | wc -l` #obliczanie ilosci plikow

echo "Liczba plikow $zmienna1"
echo "Liczba plikow $zmienna1" >$2


echo "Przestrzen dyskowa: $1"
df $1 | tail -1
df $1 | tail -1 > $3
echo "przestrzen dyskowa: " >> $3

else
echo "Zla ilosc parametrow"
fi
exit 0

1) Z katalogu domowego wypisz na ekran oraz skieruj do pliku alfa który jest drugim parametrem wywołania pliki zwykłe, które nie były modyfikowane przez miesiąc, których nazwa ma pięć znaków i zaczyna się na literę P. Policz również ilość plików posiadających pełny zestaw praw dostępu, wyniki zapisz do pliku będącego pierwszym pierwszym parametrem uruchomienia.

Kod:
#! /bin/bash

if [ $# -eq 2 ];
then
`find . -maxdepth 1 -mtime +30 -type f -name 'P????' | tee $2`
`ls -la | cut -d ' ' -f 1 | grep 'rwxrwxrwx' | wc -l > $1`
echo `cat $2`
else
echo "Zbyt malo argumentow (potrzebne 2)"
fi


W tym przypadku skrypt jest już w miarę poprawiony. Pierwotnie użyłem polecenia ls -l, przez co nie brał on pod uwagę plików ukrytych. Wersja z ls -la powinna być dobra.


2) Odnajdź pliki z rozszerz prawami dostępu, ich nazwy zapisz do pliku który jest drugim parametrem wywołania, w pliku który jest pierwszym parametrem wywołania zapisz ich ilość.

Kod:
#! /bin/bash

if [ $# -eq 2 ];
then
`ls -la | grep 'rw[Ssx]rw[Ssx]rw[Ttx]' | tr -s ' ' | cut -d ' ' -f 8 >$2`
`cat $2 | wc -l >$1`
else
echo "Zbyt malo argumentow (wymagane 2)"
fi


Tu szanowny p. Wojtas wspomniał, że może zajść sytuacja, w której wyświetlone zostaną katalogi . oraz .. a jest to raczej niechcianym efektem. Ponadto zwrócił uwagę na prawa dostępu, bo nie uwzględniłem w pierwszej wersji, że s oraz t mogą być również dużymi literami.


1. znajdź wszystkie pliki specjalne i wypisz ich nazwy do pliku będącego 2 parametrem wywołania a ich liczbę do pliku który jest drugim parametrem wywołania.


#!/bin/bash

if [ $# == 2 ];then
zm=`find /dev -type b -o -type c`
zm1=`find /dev -type b -o -type c | wc -l`
echo "$zm" > $1
echo "$zm1"> $2

else
echo "trzeba podac 2 argumenty"
fi
exit 0


2. z pliku będącego 2 parametrem wywołania wybierz linie 3,8 od początku i 5 od końca i zapisz je do pliku bedącego 1 parametrem wywołania. posortuj plik i ponumeruj linie.

#!/bin/bash

if [ $# == 2 ];then
sed -n '3 p' < $2 > $1
sed -n '8 p' < $2 >> $1
tail -n 5 $2| head -n -4 >> $1
cat $1 | sort | nl >> $1
else
echo "trzeba podac 2 argumenty"
fi
exit 0

1. w katalogu usr/include zlicz wszystkie pliki z rozszerzeniem *.h ktore zawieraja ciag znakow podany jako pierwszy argument wywolania. w pliku bedacym 2. argumentem wyw. zapisz nazwy plikow ktore zawieraja podany ciag znakow

find /usr/include -maxdepth 1 -type f -name '*.h' | grep $1 | cut -d/ -f4 | wc -l
echo `find /usr/include -maxdepth 1 -type f -name '*.h' | grep $1 | cut -d/ -f4 | tee $2`

lub
grep -l "$1" /usr/include/*.h | tee $2 | wc -l

Wyszukiwarka

Podobne podstrony:
edukomp kl 3?u przy naprawcze
Sprawdzian 5 kl 2 matematyka zadania
2010 05 Szkola konstruktorow kl Nieznany
Konepkt Biologia nauka o życiu kl 1
plany wynikowe kl 1 3 Gim
kl?itmap
Przesył i dystrybucja energii elektrycznej Frąckowiak KŁ 2012

więcej podobnych podstron