ПОС/Лаб 1 2017

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

Лаб 1 се појављује у другом термину вежби.

  • За питања са више одговора, тачни одговори су подебљани и уоквирени
  • За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
  • Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:

Група 1

Задатак 1

Поставка

(3п) Написати команде које ће исписати све фајлове у текућем директоријуму за које корисник има право извршавања.

Решење

find . -maxdepth 1 -perm /u+x

Задатак 2

Поставка

(4п) Запаковати све фајлове помоћу bzip2 алгоритма који се налазе у home директоријуму корисника и који су са екстензијом txt. Као одговор приложити списак команди које су извршене.

Решење

tar -cjf 'arhiva' *.txt

Могуће је урадити прво tar па bzip2 као што је приказано на вежбама, али нема никаквог разлога за то.

Задатак 3

Поставка

(7п) Направити списак свих директоријума који су директни потомци директоријума / и који на произвољној дубини садрже бар један фајл са екстензијом conf. Имена на списку треба да буду јединствена. Резултат сместити у фајл под именом conf.txt. Као одговор приложити списак команди које су извршене.

Решење

Уопште ме не занима, али ово је малтене немогућ задатак. Макар са знањем који су дали. Приложићу решење једне студенткиње која је добила максимум бодова, али које уопште није по ономе шта је тражено. Вероватно је у међувремену схваћено да је задатак немогућ. Авај, могуће је да "директан потомак" значи "само син", у ком случају је и прво решење тачно. Али то нема смисла.

Решење које ће вам дати максимум бодова за овај задатак:

sudo find / -name "*.conf" | tr / " " | cut -d" " -f2 | uniq > conf.txt

Проблем са овим решењем је што увек исписује другу колону иако су многи директни потомци root директоријума дубљи од дубине два. Такође решење може бити оптимизовано избацивањем tr позива па мењањем cut делимитера из " " у "/", али онда такође и мењањем броја колоне из 2 у 3.

Решење које је генерално тачно шта год "директан потомак" значио:

sudo find / -name "*.conf" | awk -F'/' '{print $(NF - 1)}' | sort | uniq > conf.txt

Група 2

Задатак 1

Поставка

(3п) Написати команде које ће исписати првих 100 природних бројева.

Решење

for i in range {1..100}; do
    echo $i
done
# takođe
i=1
while [ $i -lt 101 ]; do
    echo $i
    let i++
done
# takođe let i++ može biti zamenjeno sa i=$(($i + 1)) ili i=$[ $i + 1 ] ili 'i = $(expr $i + 1)' itd

Цхеат решење:

seq 100

Далеко креативније решење, заслуге анонимној старијој студенткињи:

cat examples.desktop -n | head -n 100 | tr -s " " | cut -d" " -f2
# ne mora biti iz tog fajla, bitno je da ima više od 100 linija

Задатак 2

Поставка

(4п) Запаковати све фајлове помоћу gzip алгоритма који се налазе у home директоријуму корисника и који у свом називу имају речи pos. Као одговор приложити списак команди које су извршене.

Решење

cd $HOME
tar -czf 'arhiva' *pos*

Могуће је урадити прво tar па gzip као што је приказано на вежбама, али нема никаквог разлога за то.

Задатак 3

Поставка

(7п) Направити списак свих корисника који имају покренут програм на рачунару. Списак треба да садржи једног корисника само једанпут. Списак уписати у фајл pokretaci.txt. Као одговор приложити списак команди које су извршене. (Помоћ: за решење потребно користити и команду са данашњег часа).

Решење

ps aux | cut -d' ' -f1 | sort | uniq

Група ?

Задатак 1

Поставка

(3п) У едитору Emacs пронаћи команду која мења buffer у текућем прозору (window).

Решење

C-x b

Задатак 2

Поставка

(4п) Направити запаковану архиву свих фајлова и директоријума који су диркетни потомци директоријума /etc и који се завршавају на conf. Архиву сместити у кориснички директоријум под називом conf.tar.gz. Као одговор приложити списак команди које су извршене.

Решење

find /etc/ -name "*.conf" -exec tar -czf "conf.tar.gz" {} +

Задатак 3

Поставка

(7п) Направити листу свих фајлова који почињу малим словима из скупа a-f и налазе се у директоријуму /bin. Листа треба да садржи величину фајлова у људски читљивом облику и треба да буде сортирана. Резутат[sic] сместити у фајл под именом bins.txt. Као одговор приложити списак команди које су извршене. (Помоћ: за решење потребно је пронаћи неку опцију о којој није причано за неки програм у упутству).

Решење

ls -shd /bin/[a-f]* > ./bins.txt

Друго, непрепоручено решење:

ls -p /bin/[a-f]* | grep -v '/$' | xargs -I{} sudo du -h {} > bins.txt

Успостављена претпоставка да фајл bins.txt треба да се сачува у тренутни директоријум.