Úvod do UNIXu 2016/2017

0  1  2  3  4  5  6  7  8  9  10  11  12 

Cvičení III

  1. Úkol z minulé hodiny
  2. vytvořte soubor, který bude spustitelný pouze jeho vlastníkem
    • touch soubor; chmod u+x soubor
  3. vytvořte adresář, do kterého se nebude moci podívat nikdo jiný než vy
  4. -
    • mkdir mydir; chmod o-xr,g-xr mydir
  5. zkuste zařídit, aby takové byly všechny vytvářené adresáře (umask)
  6. vypište prvních deset řádek souboru /etc/group. Ve výpisu nahraďte dvojtečky pomlčkami.
    • head -n 10 /etc/group | tr ":" "-"
  7. vypište posledních 5 přihlášení do systému
    • last | head -n 5
  8. spočítejte počet řádků, slov a znaků souboru /etc/passwd
    • wc -l /etc/passwd ( wc -w; wc -m)
  9. napište skript, který pro zadaný adresář zjistí, zda je prázdný, a vypíše počet souborů. Pro test prázdnosti zkuste vymyslet více řešení.
  10. -
    • pocet=`ls $1 | wc -l`; echo $pocet
    • all="$1/*"; [ ! -z $all ] && ...
  11. Vypište všechny uživatele systému a jejich UID
    • cat /etc/passwd

Dnešní témata

Úkol 3 (2 body): Vytvořte skript, který dostane jako parametry jméno souboru a řetězec. Pokud soubor obsahuje hledaný řetězec, vypíše všechny výskyty a jejich počet. Jinak nám nějak rozumně sdělí chybu. Můžete předpokládat, že výskyty jsou pouze jeden na řádek (zkuste i bez tohoto předpokladu).

Řešení (jeden výskyt na řádek):
    • #!/bin/bash
      tmp=/tmp/radky
      grep $2 $1 > $tmp || ( echo "soubor neexistuje!" && exit 1)
      pocet_radku=$(wc -l < radky)
      [ $pocet_radku -eq 0 ] && echo 'nenalezeno' && exit 2
      echo "Nalezeno $pocet_radku radku"
      cat $tmp
      rm $tmp