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 naprawczeSprawdzian 5 kl 2 matematyka zadania2010 05 Szkola konstruktorow kl NieznanyKonepkt Biologia nauka o życiu kl 1plany wynikowe kl 1 3 Gimkl?itmapPrzesył i dystrybucja energii elektrycznej Frąckowiak KŁ 2012więcej podobnych podstron