POS/Lab 2 2022

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu

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 fff" | sed -E 's/.*\b(([a-z][0-9])+)\b.*/\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