Osmé cvičení – Dodělání podmínek, find, xargs, regexy, základ sedu

Příkazy a plán:

Názvosloví

Příklady:

  1. Napište skript, který s vámi bude hrát hádání čísel – Vymyslí si náhodné číslo (to můžete získat třeba z proměnné $RANDOM) a uživatel bude postupně zadávat své tipy. Skončí, když se uživatel trefí, nebo vypíše, zda je hádané číslo menší, nebo větší. Bonus: Pokud zavoláte skript s jedním argumentem, tak si vybere náhodné číslo z rozsahu 0 až zadaná horní mez.
  2. Napište skript, který očekává řádky ve tvaru a+b=c (bez mezer) a zkontroluje, že jsou správně (spočítá a + b a otestuje s c). Pokud objeví chybu, vypíše číslo řádky, na které k ní došlo.
  3. Najděte všechny síťové uživatele (v labu pomocí getent passwd), kteří mají křestní jméno stejné, jako to vaše
  4. Vypište ze souboru /etc/apache2/httpd.conf všechny řádky, které nejsou zakomentované
  5. Příkaz find hledá soubory (a složky) podle daných parametrů v zadaném umístění a provede s nimi akci (defaultní akce je vypsat jejich název)
    • find /cesta -name "*.txt" – najde ve složce (a podsložkách) /cesta všechny soubory s příponou .txt
    • Filtrování: -user, -
    • Akce: print (default), delete, exec (dva druhy)
  6. Pokročilejší filtrování:
    • Vypište všechny složky pod /etc, které mají alespoň trojpísmenný název
    • Vypište všechny symbolické linky v /etc bez sestupování do podsložek (tedy už ne symlinky v /etc/neco/...)
    • V adresáři /etc najděte soubory, které jsou novější než /etc/passwd
    • Vypište všechny normální soubory v /etc, které nevlastí root

  7. Spočítejte velikost všech souborů v /etc s příponou .sh
  8. Vypište všechny normální soubory v /etc, které nevlastí root a pro každý z nich vypiště dlouhé informace pomocí ls -l
  9. Najděte všechny normální soubory v podstromě pod /etc, jejich název má 4-7 znaků a začíná na "a" */?>

Příklady pro pokročilé:

  1. Napište skript na počítání největšího společného dělitele $1 a $2 Euklidovým algoritmem
  2. Napište třídící skript – dostane jako argumenty libovolný počet čísel a na výstup je vypíše v utříděném pořadí (nápověda: šikovně použijte sort)