Systemy Operacyjne (sop)



Pobieranie 35,55 Kb.
Data22.12.2017
Rozmiar35,55 Kb.

Systemy Operacyjne (SOP)

Kolokwium nr 1


Grupa A
Imię i nazwisko: ................................................................................
Numer indeksu: ................................................................................

Zadanie 1. (5 pkt.)

Obliczyć ile katalogów znajduje się w katalogu bieżącym.

ls -pall | grep ‘[^.][/]$’ | wc –l - najlepiej

ls -all | grep ‘^[d]’ | wc –l - policzy też . i ..

echo $[ ` ls -all | grep ‘^[d]’` - 2 ] - najlepiej
Zadanie 2. (10 pkt.)

Napisać skrypt, który wypisze wszystkie swoje parametry, każdy w osobnej linii, wraz z ich numerami (np. w formacie „numer : parametr”; należy użyć pętli for).



a=1

for par in $@

do

b=$1

echo “parametr nr $a wynosi $b”



let a=a+1

shift 1

done
Zadanie 3. (15 pkt.)

Napisać skrypt działający według następujących reguł:



  1. Dopuszczalne parametry wywołania skryptu to ‘a’ oraz ‘b’. Pozostałe parametry są błędne.

  2. Jeżeli podano 1 z dozwolonych parametrów należy wypisać drugi z nich.

  3. Jeżeli podano dwa różne dozwolone parametry należy wypisać drugi z podanych parametrów.

  4. W pozostałych przypadkach należy wypisać odpowiedni komunikat o błędzie.


case $# in

1)

case $1 in

a)

echo ‘b’

;;

b)

echo ‘a’

;;

*)

echo „zły parametr”

;;

esac

;;

2)

if [ $2 == ‘a’ ] || [ $2 == ‘b’ ]

then

echo $2

else

echo “złe parametry”



fi

;;

*)

echo ”zła liczba parametrów”

;;

esac


Systemy Operacyjne (SOP)

Kolokwium nr 1


Grupa B
Imię i nazwisko: ................................................................................
Numer indeksu: ................................................................................

Zadanie 1. (5 pkt.)

Wypisać nazwy pięciu (jeżeli jest ich mniej, to wszystkich) największych co do rozmiaru plików w danym katalogu posortowanych wg rozmiaru w kolejności malejącej.

ls -Sl | head –n5

Zadanie 2. (10 pkt.)

Napisać skrypt, który dla każdego pliku zwykłego w katalogu bieżącym wypisze jego nazwę oraz jego rozmiar w liniach. Uwaga: jeżeli nie ma odpowiednich praw dostępu, należy zamiast wielkości pliku wypisać komunikat „brak dostępu”.

for file in *

do

if [ -f $file ]

then

echo –n $file “:”

ls –all $file | cut –c 35-43

elif [ ! –r $file –o ! –x $file ]



then

echo ”brak dostępu”

fi

done
Zadanie 3. (15 pkt.)

Napisać skrypt (funkcję), który dla każdego podkatalogu danego katalogu ( oraz dalej w nich rekurencyjnie ) sporządzi plik o nazwie „INDEKS.DIR” zawierający listę wszystkich plików w nim się znajdujących. Uwaga: należy sprawdzać prawa dostępu do danego podkatalogu. Jeżeli nie ma wystarczających praw do wykonania określonej operacji – należy wypisać stosowny komunikat.



wyswietl () {

for file in *; do

if [ -d file ]; then

if [ ! –r $file –o ! –x $file ]; then

echo “brak dostępu”



else

cd $file

wyswietl

cd ..

fi

fi

done

ls –all > index.dir

}

wyswietl

Systemy Operacyjne (SOP)

Kolokwium nr 1
Grupa C
Imię i nazwisko: ................................................................................
Numer indeksu: ................................................................................

Zadanie 1. (5 pkt.)

Napisać polecenie, które wykasuje wszystkie pliki zwykłe należące do użytkownika o rozszerzeniu *.bak, rekurencyjnie, począwszy od bieżącego katalogu.

find . –name ”*.bak” –type f –user $USER –exec rm {} \;

Zadanie 2. (10 pkt.)

Napisać skrypt, który wpisze unikalne linie danego pliku tekstowego, posortowane malejąco według zadanego nr znaku (parametr skryptu )w linii. Jeżeli nie podano parametru skryptu należy go zainicjować jako wartość 1.

if [ $# -le 2 ]; then

sort –r –k1.${2:-1} $1 | uniq –u

else

echo “ble ble”

fi

Zadanie 3. (15 pkt.)

Napisać skrypt (funkcję rekurencyjną) obliczającą wartość wyrażenie wg następującego zależności:

jeżeli n = 0, to F(n) = 1 ,



w przeciwnym wypadku F(n) = n * F(n-1), dla n 1

F () {


a=$1

n=$1

if [ $a –eq 0 ]; then

n=1

echo $n

else

a=`expr $a – 1`

let n=${n}*`F $a`

echo $n

fi

return $n

}

F $1

Systemy Operacyjne (SOP)

Kolokwium nr 1
Grupa D
Imię i nazwisko: ................................................................................
Numer indeksu: ................................................................................

Zadanie 1. (5 pkt.)

Napisać polecenie, które powoduje zakończenie procesu o podanej nazwie. (użyć poleceń ps, grep, kill)

kill –9 `ps | grep ‘nazwa_procesu’ | cut –c1-5
Zadanie 2. (10 pkt.)

Napisać skrypt wyszukujący w pliku linie rozpoczynające się od zadanego wzorca (parametr skryptu), następnie sortuje te linie malejąco wg 2-go znaku w linii i zapisuje do pliku o nazwie znalałem.txt.



if [ $# -eq 2 ]; then

grep ”^$1” $2 | sort –r –k1.2 > znalazłem.txt

else

echo ”złe paramatry: par 1 – wzorzec, par 2 –plik”

fi
Zadanie 3. (15 pkt.)

Napisać skrypt, który z listy parametrów wejściowych będących liczbami naturalnymi wybierze liczbę największą, najmniejszą oraz obliczy ich sumę. Wyniki należy wypisać, każdy w osobnej linii. Jeżeli skrypt będzie posiadał mniej niż 3 parametry wejściowe należy wypisać stosowny komunikat.



min=$1

max=$2

sum=0

if [ $# -ge 3 ]; then

for liczba in $@; do



if [ $liczba –lt $min ];then

min=$liczba

elif [ $liczba –gt $max]; then

max=$liczba

fi

let sum=${sum}+$liczba

done

echo “suma =$sum, min=$min, max=$max”



else

echo ”musisz podać co najmniej 3 liczby-parametry”

fi







©operacji.org 2017
wyślij wiadomość

    Strona główna