Kolos2


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 //jeśli sa dwa parametry wowałania

zm=`find /dev -type b -o -type c` //pliki specjalne znajuduja sie w kataogu /dev

//pliki specjalne : b typ urzaddzenie blokowe, c-typ urządzenie znakowe

zm1=`find /dev -type b -o -type c | wc -l`

echo "$zm" > $1 // wyświetlenie wartość zmiennej i przekierowanie do $1 czyli pierwszego

//parametru wywołania

echo "$zm1"> $2

else

echo "Zla ilosc parametrow"

fi //zakończenie petli

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 //listuje I wrzuca do plik

grep '^-' plik #listowanie plikow //sortuje wszystkie pliki z plik

zmienna=`grep '^d' plik | wc -l` //obliczanie ilosci katalogow

echo "ilosc katalogow $zmienna"

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

// ` ` całe polecenie się wpisuje, a' ` to jest kryterium

echo "Liczba plikow $zmienna1"

echo "Liczba plikow $zmienna1" >$2

echo "Przestrzen dyskowa: $1"

df $1 | tail -1 /wyswietla 1 linike od dołu, df wypisuje wszystko wraz z przestrzenia dyskowa

df $1 | tail -1 > $3

echo "przestrzen dyskowa: " >> $3 //dopisuje do pliku , nie nadpisuje

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 // -eq to znaczy ==

`find . -maxdepth 1 -mtime +30 -type f -name 'P????' | tee $2` //maxdepth okresla makymalna

//głebokosc katalogu

`ls -la | cut -d ' ' -f 1 | grep 'rwxrwxrwx' | wc -l > $1` // odcina przy katalogu spacje , a przy pliku

//pierwsza kolumne I wybiera wysztskie prawa I zlicza

echo `cat $2` //cat wyswietla to co jest w parametrze drugim

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` //tr -s odcieło cos chyba

`cat $2 | wc -l >$1` //cat -wyswietla

else

echo "Zbyt malo argumentow (wymagane 2)"

fi

// cut wyciaga po separatorze -d kolumny o numerze -f czyli w naszym przykładzie zostaje wyciagnieta tylko kolumna 8

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 //wyciga tylko 8 linie od pocztku

tail -n 5 $2| head -n -4 >> $1 // SAMO TAIL wyciaga piec wierszy od konca , a tail razem z head

//wyciąga tylko piaty wiersz końca bo pierwsze cztery head odcina

cat $1 | sort | nl >> $1

else

echo "trzeba podac 2 argumenty"

fi

exit 0

//ma wyciagnac wszystko z $2 i wstawiać do $1



Wyszukiwarka

Podobne podstrony:
kolos2 rozw id 242277 Nieznany
kolos2grunty, mechanika gruntów, mechanika gruntów
kolos2
fizy2 kolos2
lach kolos2 opracowane
kolos2
Przykłady do rozwiązania - tablica korelacyjna, Informatyka i Ekonometria SGGW, Semestr 2, Statystyk
kolos2
HMS kolos2
ekologia kolos2
Algorytmy kolos2
gotowe kolos2
sip 2 kolos sem 7, sip7 kolos2, SIP VII sem kolos2
sip 2 kolos sem 7, sip7 kolos2, SIP VII sem kolos2
mat kolos2
lach kolos2 opracowane
Mathcad, kolos2

więcej podobnych podstron