POS/Lab 1 2016

Izvor: SI Wiki
< ПОС
Datum izmene: 4. april 2021. u 14:05; autor: Fedja (razgovor | doprinosi) (+pos-compliant rešenje)
Pređi na navigaciju Pređi na pretragu

Lab 1 se pojavljuje u drugom terminu vežbi.

Grupa 3

Zadatak 1

Postavka

(3p) Kopirati sadržaj direktorijuma /bin u direktorijum /home/pos/test. Sve fajlove (koji nisu linkovi, oznaka l) u novom direktorijum[sic] podesiti da imaju pravo pristupa --x------. Kao odgovor priložiti spisak komandi koje su izvršene.

Rešenje

mkdir -p /home/pos/test &&
    cp -P /bin/* /home/pos/test/
chmod 100 /home/pos/test/*

Zadatak 2

Postavka

(4p) Prebrojati koliko ima linija u fajlu /etc/passwd koji ne sadrže reči pos i sshd. Kao odgovo priložiti spisak komandi koje su izvršene.

Rešenje

grep -v 'pos\|sshd' /etc/passwd | 
    wc -l

Drugo rešenje:

grep -cv 'pos\|sshd' /etc/passwd

Zadatak 3

Postavka

(7p) Napraviti listu veličina svih fajlova/direktorijuma koji su direktni potomci direktorijuma /etc. U listi veličine treba da budu u ljudski čitljivom obliku i lista treba da sadrži samo veličine. Listu sačuvati u fajlu sizes.txt. Izlazni fajl treba da bude u korisničkom direktorijumu. Kao odgovor priložiti spisak komandi koje su izvršene. (Napomena: ls komanda može da ispisuje nekoliko razmaka jedno pored drugog).

Rešenje

sudo du -ah /etc | 
    cut -d$'\t' -f1 > sizes.txt

Drugo rešenje:

sudo du -ah /etc | 
    awk '{print $1}' > sizes.txt


Grupa 4

Zadatak 1

Postavka

(5p) Napisati komande koje sabiraju dan i mesec za tekući datum na računaru.

Rešenje

echo $(( $(date +%m) + $(date +%d) ))

Drugo rešenje:

expr $(date +%m) + $(date +%d)

Zadatak 2

Postavka

(4p) Pronaći koliko ima skrivenih fajlova/direktorijuma u /home/pos direktorijumu. Direktorijum se posmatra do proizvoljne dubine. Kao odgovor priložiti spisak komandi koje su izvršene.

Rešenje

dubina=3
[ -d /home/pos ] && 
    find /home/pos -maxdepth $dubina |
    grep '/\.[^/]*$' | 
    wc -l

Dubina je određena promenljivom "dubina".

Zadatak 3

Postavka

(5p) Napraviti listu svih ID-jeva korisnika koji postoje na raunaru. U fajlu /etc/passwd se nalaze ID-ijevi korisnika. U svakom redu se nalazi po jedan ID, tačno između drugog i trećeg znaka :. Rezultujuću listu upisati u fajl /home/pos/id.txt. Kao odgovor priložiti spisak komandi koje su izvršene.

Rešenje

mkdir -p /home/pos && 
    cat /etc/passwd | 
    cut -d':' -f3 > /home/pos/id.txt

Grupa 5

Zadatak 1

Postavka

(3p) Napisati test komandu koja proverava da li je fajl /bin/ls noviji od fajla /bin/cat.

Rešenje

if [ /bin/ls -nt /bin/cat ]; then
    echo "/bin/ls je noviji"
else
    echo "/bin/cat je noviji"
fi

Drugo rešenje:

[ /bin/ls -nt /bin/cat ] && 
    echo "/bin/ls je noviji" || 
    echo "/bin/cat je noviji"

Zadatak 2

Postavka

(4p) Fajl studenti.txt (napravite sami) sadrži informacije o studentima u sledećem formatu: <ime> <prezime> <broj poena>. Podaci za jednog studenta se nalaze u zasebnom redu. Podaci u redu odvojeni su jednim blanko znakom. Izdvojiti 20 studenata koji imaju najveći broj poena. Kao odgovor priložiti spisak komandi koje su izvršene.

Rešenje

sort -k3r studenti.txt | 
    sed 's/ [0-9]\+//' | 
    head -20

Drugo rešenje:

sort -k3r studenti.txt | 
    sed -n 's/ [0-9]\+//; 1,20p'

Treće rešenje:

sort -k3r studenti.txt | 
    awk '{print $1" "$2} NR==20{exit}'


Zadatak 3

Postavka

(7p) Prikazati samo informacije fajla koji je najveći u direktorijumu /boot. Pokazati informacije u ljudski čitljivom obliku. Kao odgovor priložiti spisak komandi koje su izvršene.

Rešenje

ls -shd /boot/* |
    sort -hr |
    head -1

Grupa 6

Zadatak 1

Postavka

(3p) U editoru Emacs pronaći komandu koja vrši pretragu teksta u tekućem fajlu.

Rešenje

C-s

Zadatak 2

Postavka

(4p) Pronaći sve fajlove u direktorijumu /usr sa ekstenzijom tar.gz. Jednu arhivu raspakovati u direktorijum ~/user. Kao odgovor priložiti spisak komandi koje su izvršene.

Rešenje

# izlistaj sve tar.gz fajlovi iz /usr
sudo find /usr -name '*.tar.gz' 

# raspakivanje jedne arhive u ~/user
mkdir -p ~/user && sudo find /usr -name '*.tar.gz' -print -quit |
    xargs tar -C ~/user -xvzf

Drugo rešenje:

# izlistaj sve tar.gz fajlovi iz /usr
sudo find /usr -name '*.tar.gz'

# raspakivanje jedne arhive u ~/user
mkdir -p ~/user && sudo tar -C ~/user -xvzf `find /usr -name '*.tar.gz' -print -quit`

Zadatak 3

Postavka

(7p) Fajlovi studenti1.txt i studenti2.txt (napravite sami) sadrže informacije o studentima u isotm formatu <ime> <prezime> <gggg/bbbb>. Studenti mogu da se ponavljaju u obe datoteke. Podaci za jednog studenta se nalaze u zasebnom redu. Broj razmaka između reči je proizvoljan. Napraviti listu svih indeksa koji se javljaju u oba fajla. Indeksi treba da budu jedinstveni u listi. Listu upisati u fajl indeksi.txt. Kao odgovor priložiti spisak komandi koje su izvršene.

Rešenje

diff -by studenti1.txt studenti2.txt |
    grep -v '<\|>' |
    cut -d' ' -f1,2,3 > indeksi.txt
# Напомена: cut команда може бити генерално замењена са awk-ом. У овом конкретном случају би се то урадило са awk '{print $1" "$2" "$3}'.