# Uvod do UNIXu, 3. cviceni, 2005-03-09
#
# $DevNullCZ: cviceni-03.reseni.txt,v 1.2 2005/04/01 08:43:48 jp Exp $
#

Postupne provadejte dane priklady. Krome prvnich prikladu, ktere
jsou spise na uvedomneni si nekterych zalezitosti, se reseni
vetsinou sklada z 2-3 pajp spojenych za sebou krome prikladu (15),
ktery je o neco malo tezsi.

Vsechny priklady provadejte na mail.kolej.mff.cuni.cz, pripadne na
jinem stroji s FreeBSD.

---

(1) zkontrolujte pristupova prava /tmp/pechanec2 a pristupova prava
souboru v nem vytvorenych. Overte si, ze nejste vlastniky danych
souboru a zjistete, zda muzete nektery z techto souboru smazat. Proc
tomu tak je/neni?

(2) v adresari /tmp/pechanec zkuste smazat podadresar 'test'. Proc
to ted nelze? Hint: 'man sticky', 'man chmod' a poradne se podivejte
na prava /tmp/pechanec a /tmp/pechanec2

(3) v /tmp si vytvorte adresar sveho jmena, v nem soubor 'test',
ktery ma prava '--x--xr--' a do tohoto souboru vlozte prikaz,
kterym jste dosahli nastaveni techto prav. Nepouzivejte editor !!!

Hint: echo, >

(4) overte v manu pro chmod, proc 'chmod = xxx' nastavi prava
souboru 'xxx' na ---------

DOMACI UKOL: podivejte se do 'man chmod' na nastaveni prav pomoci
absolutniho modu (oktalovy - 0400, 0100, ...)

(5) ve tom svem tmp adresari si vytvorte adresar 'foo', v nem
soubory '1.foo' a '2.foo' a adresar 'bar', v adresari 'bar' pak
jeste soubory 'a.bar' a 'b.bar'. Kdyz si date 'ls -R foo', musi
vam to ukazat vypis podobny tomuto (prava ted igorujte):

[KOLEJ-MAIL:pechanec]/tmp/pechanec$ ls -lR foo
total 3
-rw-------  1 pechanec  wheel    6 Mar  9 10:57 1.foo
-rw-------  1 pechanec  wheel    6 Mar  9 10:57 2.foo
drwx------  2 pechanec  wheel  512 Mar  9 10:58 bar/

foo/bar:
total 2
-rw-------  1 pechanec  wheel  6 Mar  9 10:58 a.bar
-rw-------  1 pechanec  wheel  6 Mar  9 10:58 b.bar

Ted pro sebe (majitele) odstrante u adresare 'foo' pravo cteni, u
adresare 'bar' pravo 'x'. Zkuste nasledujici a zkuste si uvedomit,
proc tomu tak je:

ls foo/bar
echo foo/bar/*
ls -ld foo/bar
ls -l foo/1.foo
cat foo/bar/a.bar
ls foo/bar/b.bar

(toto jeste blize na cviceni vysvetlim)

(6) vypiste 1. 10 radku /etc/passwd tak, ze vypisujete radky az od
2. znaku vcetne, tj. ve vystupu budou i tyto radky:

oot:*:0:0:Charlie &:/root:/usr/local/bin/bash
oor:*:0:0:Bourne-again Superuser:/root:/usr/local/bin/bash


(7) setridte soubor /etc/group podle cisla GID. Dejte pozor na to,
ze tridite cisla. 1., 3. a 4. radek tedy vypadaji takto:

nobody:*:-1:
<zde umyslne chybi skupina wheel>
daemon:*:1:daemon
kmem:*:2:root


UKAZTE MI VYSLEDEK.

(8) vypiste nejvyssi UID cislo z /etc/passwd. Ma vyjit 65534


UKAZTE MI VYSLEDEK.

(9) vypiste radek z nejvyssim UID cislem v /etc/passwd


(10) pomoci prikazu 'tr' nahradte vsechna mala pismena v /etc/passwd
na velka; pouzijte tridy znaku (,,classes''). Viz 'man tr'


Uvedomte si (viz 'man tr'), ze prikazu 'tr' nelze zadat jmeno souboru
jako parametr!

(11) z /etc/passwd pomoci prikazu 'tr' vymazte vsechny vyskyty
znaku ':'


(12) nahradte v /etc/group znaky noveho radku mezerou (znak nove
radky se zapise pomoci '\n'). Vysledkem je tedy jeden dlouhy
radek, kde puvodni radky jsou spojene mezerou.


(13) pomoci 'tr' zmente vsechny znaky, ktere nejsou 'a', na 'X'

hint: 'man tr' a najdete si 'Complement'; hledani funguje pomoci
/co_chci_najit<ENTER>

note: uvedomte si, ze zmena na X plati i pro znaky konce radku, tedy
vysledkem je jeden dlouhy radek !!!


(14) jako (13), ale nasobne vyskyty znaku 'X' za sebou ve vysledku
nahradte jedinym znakem X (hint: man tr). Vystup tedy musi byt
takovyto:

XaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX  ....atd


(15) spocitejte, kolik ruznych slov je obsazenych v souboru
'/home/pechanec/rfc/rfc791.txt'.

hint: vsechny znaky, ktera nejsou pismena a-Z, nahradte znakem
nove radky. Vysledek setridte, zruste duplicitni radky (=slova)
pomoci prikazu 'uniq'. Spoctete vysledny vystup. Vysledek ma vyjit
1448 ruznych slov. Pokud navic igorujete velka mala pismena (=
prevedete vsechno napr. na mala), vyjde vam 1222 ruznych slov.

UKAZTE MI VYSLEDEK.


(16) rozdelte soubor /etc/passwd na soubory, z nich kazdy ma 10
radku, jeho jmeno zacina retezcem 'passwd-' a nasleduji 3 znaky,
ktere rozlisuji jednotlive split soubory.