POS/Lab 2 2022
Lab 2 se pojavljuje u trećem terminu vežbi.
- Za pitanja sa više odgovora, tačni odgovori su podebljani i uokvireni
- Za pitanja za koje se odgovori unose, tačni odgovori su podvučeni i sakriveni, tako da se prikažu kada izaberete taj tekst (primer: ovako)
- Pritisnite levo dugme ispod za sakrivanje i otkrivanje svih odgovora, ili desno dugme za uključivanje i isključivanje interaktivnog režima:
Grupa 1
Zadatak 1
Postavka
(3p) Napisati regularni izraz koji pronalazi bilo koji broj. Npr. u tekstu „a -123b a234“, treba da se upare „123“ i „234“.
Rešenje
echo "a-123b a234" | sed -n "/[[:digit:]]/p"
Zadatak 2
Postavka
(5p) Napisati komande koje menjaju vlasničku grupu svemu što počinje sa rečju first u direktorijumu čija se putanja već nalazi u promenljivoj dir. Nova vlasnička grupa treba da bude ista kao i ona koju ima sam direktorijum.
Rešenje
chgrp `stat $dir -c "%G"` -R $dir/first*
Zadatak 3
Postavka
(6p) Napisati skriptu koja šalje signal 9 svim procesima koje je pokrenuo korisnik čiji je korisničko ime zapisano u promenljivoj KILL_USER.
Rešenje
#!/bin/bash
IFS=$'\n'
for i in $(ps axu | grep "^$KILL_USER" | tr -s " " " ")
do
kill -9 $(echo $i | cut -d' ' -f2)
done
Grupa 2
Zadatak 1
Postavka
(3p) Napisati regularni izraz koji uparuje reč u tekstu koja se sastoji od naizmeničnog pojavljivanja malog slova i cifre. Npr. u tekstu „aaa123 A1a2 1a2a a1a2a3“, treba da se upari samo „a1a3a3“.
Rešenje
#primer
echo "aa123 A1a2 1a2a a1a2a3" | sed -E 's/.*\ ([a-z]{1}[0-9]{1}?)/\1/'
Zadatak 2
Postavka
(5p) Napisati komande koje svim fajlovima, koji su tipa ASCII text, u podstablu direktorijuma, dodaju pravo upisa za vlasnika i vlasničku grupu. Putanja do direktorijuma je već data u promenljivoj dir.
Rešenje
#!/bin/bash
dir=. #primer
for j in $(find $dir -name *.txt)
do
chmod u+w $j
chmod g+w $j
done
Zadatak 3
Postavka
(6p) Napisati skriptu koja svim procesima koji su pokrenuti u tekućoj konzoli posalje signal 9 (komanda jobs ima opciju -l za ispisivanje pid-a).
Rešenje
#!/bin/bash
for j in $( jobs -l | tr -s " " " " | cut -d" " -f2 )
do
echo $j
kill -9 $j
done