Menu

Osmé cvičení (12. 4.)

Materiály

Příklady

Zobrazit řešení
  1. Vytvořte soubor aaa a na něj hardlink bbb a softlink ccc. Změňte obsah bbb a podívejte se, co to udělalo s ostatními. Podívejte se pomocí ls -l kolik hardlinků ukazuje na který soubor. Smažte soubor aaa a zkuste vypsat bbb i ccc.
  2. touch aaa
    ln aaa bbb
    ln -s aaa ccc
    echo "obsah" > bbb
    ...
    
    Změna obsahu bbb ovlivní všechny soubory, protože ukazuje na stejný inode jako aaa. Počet hardlinků na soubory aaa a bbb je dva, u ccc jeden. Po smazání aaa budou stále data existovat (počet hardlinků bude 1) a budou dostupná v souboru bbb. Nicméně softlink ccc nyní ukazuje na soubor aaa, který již neexistuje a proto je rozbitý.
  3. Napište funkci soucin, která vynásobí všechny své parametry (mohou být více než dva).
  4. soucin() {
        vysl=1
        for i; do
            vysl=$(( vysl*i ))
        done
        echo $vysl
    }
    
    Trikové řešení:
    soucin() {
        echo $(( $( echo $@ | tr ' ' '*' ) ))
    }
    
  5. Napište rekurzivní funkci počítající faktoriál.
  6. fact() {
        if [ $1 -eq 0 ]; then
            echo 1
        else
            echo $(( $( fact $(( $1-1 )) ) * $1 ))
        fi
    }
    
  7. Napište rekurzivní funkci počítající n-té Fibonacciho číslo.
  8. fib() {
        local n=$1
        if [ $n -le 1 ]; then
            echo 1
        else
            local f1=$( fib $((n-1)) )
            local f2=$( fib $((n-2)) )
            echo $(( f1+f2 ))
        fi
    }
    
  9. Pošlete si e-mail pomocí programu mail a ověřte si, že dorazil.
  10. mail -s 'Předmět' moje@adresa.cz
    
    Po zadání program čeká na standrardní vstup, až e-mail dopíšete, ukončete jej stiskem Ctrl-D.
  11. Stáhněte si soubor s SMS pomocí curl http://kam.mff.cuni.cz/~pasky/sms.txt. V tomto souboru se nachází SMS (na každém řádku jedna), které bychom chtěli postupně posílat na e-mail své milé (prozatím na váš, ať se to dobře testuje). Napište shellový skript, který při svém spuštění vždy vybere první řádku souboru, tu odešle na vaši adresu a ze souboru ji odstraní, aby při příštím spuštění mohla být odeslána zase další zpráva v pořadí.
  12. #!/bin/sh
    head -n1 sms.txt | mail -s 'Zpráva pro tebe' moje@mila.cz
    sed -i '1d' sms.txt