ПОС/Лаб 1 2017
Лаб 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 треба да се сачува у тренутни директоријум.