###
### Plan
###

##
## Domaci ukoly:
## 
# 0) poslete mi mailem svuj nick/username
# 1) soubor s 4096 (=2**12) unix

# Co delaji nasledujici (bash) zkratky
# dalsi zkratky - shell
# Ctrl-d, Ctrl-c Ctrl-l Ctrl-z Ctrl-\
# Ctrl-a, Ctrl-e, Ctrl-w, Ctrl-k, Ctrl-Left, Ctrl-Right, Ctrl-r
# https://ss64.com/bash/syntax-keyboard.html

#
# presmerovani & pipes podrobneji
# detaily viz:
# http://pubs.opengroup.org/onlinepubs/007904875/utilities/xcu_chap02.html#tag_02_07
#

# presmerovani stdout do souboru
# vytvorit soubor s cisly 1 2 3
seq 3 > soubor

# vytvorit soubor s cisly 1 2 3 1 2 3
seq 3 > soubor
# append
seq 3 >> soubor
# a co jen s jednim pouzitim seq?
seq 3 > soubor ; cat soubor soubor > soubor.tmp ; mv soubor.tmp soubor

# POZOR: konstrukce
cat soubor | cat >> soubor
# je spatne, proc?
# napoveda: v druhem terminalu, pro velky soubor (staci iterovat)
watch du soubor 
# vysvetleni: vznika race condition, ktery pro velky soubor zpusobi zacykleni
# kdyz prvni cat nezvladne nacist cely soubor do bufferu predtim, nez do nej
# posledni cat zapise

# stejne jako > a >> presmerovavaji vystup, tak < a << presmerovavaji vstup, tzn:

# da obsah souboru pozdravy na vstup programu wc
wc -l < pozdravy

# vytvorit soubor pomoci cat (v interaktivním terminálu)
cat > pozdravy
ahoj
nazdar
cau
Ctrl+d
# ^ Ctrl+d je nutné zmáčknout, ne napsat
# lépe: (to funguje i jako součást skriptů)
cat > pozdravy <<KONEC
ahoj
nazdar
cau
KONEC

#
# editovani souboru & souborovy manager
#

# mcedit - jednoduchy editor, ktery je soucasti Midnight Commanderu 
# ovladani - stejne jako mc - funkcni klavesy F1, F2, ...
# misto Fcislo (F1) lze zmacknout escape a cislo 
mcedit
# btw, mc - souborovy manager se zabudovanym editorem
mc
# vim - sofistikovany super-editor, doporucuji naucit, ale netrivialni ovladani
vim
# nano - jednoduchy editor, ovladani e.g.
# Ctrl+o  zapise soubor
nano

# vytvorit prazdny soubor
> soubor
# nebo: (touch slouzi pro meneni access and modification time)
touch soubor

# unix nema koncovky
# identifikace souboru - file 
file /etc/*
# Dlouhy vypis muzeme cist po strankach pomoci more pageru
file /etc/* | more
# nebo lepe pomoci less
file /etc/* | more
# jak vypada binarni soubor?
file /bin/bash

#
# slozky & wildcards
#

# vytvorte adresarovou strukturu a/aa a/ab a/ac b/ba b/bb b/bc
mkdir a b
touch a/aa a/ab a/ac b/ba b/bb b/bc

# vypiste soubory zacinajici na a
ls */a*
# vypiste soubory koncici na b
ls */*b
# vypiste soubory obsahujici a
ls */*a*
# vypiste soubory obsahujici a nebo b
ls */*[ab]*
# uklidte po sobe
rm -r *
# nebo (mozna jasneji)
rm */*    # napred soubory
rmdir *   # potom prazdne slozky


