#####
##### reseni domacich ukolu
#####
# hw7.1)
#ctime - stats changed
#atime - file access
#mtime - file modified
find /tmp -name '*.log' -ctime 7 -delete

# hw7.2) 
# prvni pokus
find /tmp -name '*.log' -ctime 7 | xargs rm
# to ale pousti rm jednou, tzn, pro mnoho souboru pretece `getconf ARG_MAX`

# druhy pokus (po jednom radku)
find /tmp -name '*.log' -ctime 7 | xargs -n1 rm
# co se deje pro soubory, které mají v názvu znak nového řádku?
# (pozor $'' je bash-specific)
touch a b $'a\nb'

# podivejme se na posloupnost bytu, ktera leze z find
man ascii
# a 
find . | od --endian=big -x

# tzn, nejsme schopni odlisit soubor ktery se jmenuje 'a\nb' a mezi 2ma soubory 'a' a 'b'
# to proto, ze defaultne xargs zere vstup po radkach, tzn \n je logicky oddelovac zaznamu
# a tedy nemuze byt soucasti samotneho zaznamu

# resenim je pouzit znak, ktery nemuze byt v nazvu souboru - to je lomitko /,
# nebo \0 (nulovy byte), reprezentovany v hexa jako 0x00.

# finalni reseni:
find /tmp -name '*.log' -ctime 7 -print0 | xargs -0 -n1 rm

# mmch:
# co presne se stane tady?
echo  $'pred\0po'
# (HELP: jak jsou v C reprezentovany stringy?)

# hw7.3)
touch -d 1970-01-01 /tmp/touch_me.log

#####
##### Cviceni:
#####

#
# programovani v shellu
#


# if prikaz
# if test 
# if [
# man test

# if prikaz
# jako prikaz se da pouzit cokoliv, (test, grep, expr, ...),
# dulezity je return code!

echo ahoj | grep ahoj
# 0 je uspech
echo $?

# pusti grep a vystup presmeruje do haje
if grep ahoj pozdravy >/dev/null
then
	echo "v souboru pozdravy je retezec ahoj"
else
	echo "v souboru pozdravy neni retezec ahoj"
fi

# ekvivalentne
if grep -q ahoj pozdravy
then
	echo "v souboru pozdravy je retezec ahoj"
else
	echo "v souboru pozdravy neni retezec ahoj"
fi

# if test

A=1
if test "$A" -gt 0 ; then
	echo je kladne
else
	echo neni kladne
fi

# if [

cat > delete_file.sh <<\KONEC
#!/bin/sh
# smaze soubor $1, je-li to normalni soubor (regular file)
if [ -f "$1" ] ; then
	rm "$1"
fi
KONEC


# for
for cislo in $(seq 10) ; do
	echo "$(($cislo + 5))"
done


# while
# while prikaz  
# prikaz stejne jako v ifu

# e.g. iterujeme pres cisla 0 ... 9
I=0
while [ "$I" -lt 10 ] ; do 
	echo $I
	I=$(($I+1))
done

# idiom while read
# TZN: do while cyklu se daji sypat veci z pipe

# vice o read a IFS nekdy
seq 10 | while read cislo ; do 
	echo $cislo
done
