Cvičení z Úvodu do UNIXu, letní semestr 2018/19

Petr Kučera, KTIML MFF UK

Základní informace

Užitečné odkazy

Zápočet

Po každém cvičení zadám domácí úkoly, jejichž řešení budu očekávat do začátku dalšího cvičení. Pokud na konci budete mít alespoň 2/3 bodů z těchto úkolů, tak dostanete zápočet. Kdo bude mít méně bodů, bude muset k získání zápočtu vypracovat ještě pár domácích úkolů navíc, které zadám na konec (jejich množství a obtížnost budou přímo úměrné chybějícímu počtu bodů). Za úkoly z každého cvičení bude možno dostat 3 body, i když ze začátku bude pár jednodušších úkolů a ke konci bude třeba jen jeden, ale těžší. Kdo odevzdá méně než 1/3 úkolů, zápočet ode mne nedostane.

V úkolech je možné používat jen prostředky probrané do cvičení, ke kterému se vztahují (včetně). Pokud si všimnu, že někdo odevzdal kopii jiného řešení, nedostane za tento úkol žádné body, stane-li se to podruhé, nedostane ode mne zápočet.

Úkoly mi odevzdávejte e-mailem, nejpozději do začátku následujícího cvičení. Řešení buď pište do těla mejlu, nebo přikládejte v čistě textových souborech (nepoužívejte soubory pdf, word a podobně). Zadání úkolů jsou napsána vždy u odpovídajícího cvičení (tj. aktuální úkoly jsou vždy dole na stránce).

Úkoly byly zadány na 12 cvičení (poslední cvičení do limitu nepočítám), tedy limit pro získání zápočtu je 24 bodů. Doplňkové příklady budou postupně přidány k poslednímu cvičení.

Některé vlastnosti u-labů

Je dobré znát některé vlastnosti UNIXového labu na Malé Straně. Doporučuji proto prohlédnout si stránky UNIXové laboratoře na Malé Straně. Zmíním alespoň ty rozdíly, které mi připadají nejznatelnější:

  1. Domovské adresáře jsou umístěny AFS filesystému, kde nefungují standardní UNIXová práva (viz výše uvedená stránka, případně stránka o právech v u-labech)
  2. Pokud si tedy chcete zkoušet příkaz chmod a věci související se standardním UNIXovým systémem práv, čiňte tak v adresáři /tmp na tom kterém stroji, tam fungují tím standardním způsobem.
  3. /etc/passwd neobsahuje informace o vašich uživatelských účtech, protože ty jsou skladovány v dynamické databázi jinde a jinak, pokud potřebujete informace o uživatelských účtech ve formátu /etc/passwd, dostanete je příkazem getent následovně:
    getent passwd
    případně můžete přidat parametr specifikující, co vás zajímá, viz též getent --help.
  4. Totéž platí i pro /etc/group a getent group.
  5. Příkaz find si s filesystémem afs (nejspíš stále) nerozumí, nepoužívejte jej proto raději na síťových discích. Hledat pomocí find můžete v lokálních adresářích jako /tmp, /usr, /etc a podobně, ale raději ne ve vašem domovském adresáři. Výsledek vyhledávání ve vašem domovském adresáři nelze zaručit.

Obsah cvičení

1. cvičení (21. února 2019)

Základní příkazy, ovládání shellu.

Trochu podrobněji:

Příklady

  1. Ve svém domovském adresáři vytvořte adresář ADR
  2. Do tohoto adresáře okopírujte soubory z adresáře /usr/include, jejichž názvy začínají znakem m, končí příponou .h a kromě toho v názvu obsahují číslici.
  3. V adresáři ADR vytvořte podadresář PODADRESAR.
  4. Prvních pět řádek z každého z okopírovaných souborů uložte do souboru ~/ADR/PODADRESAR/prvnichpet.
  5. Poslední řádky souborů v ~/ADR uložte do souboru ~/ADR/PODADRESAR/posledni.
  6. Soubory v ~/ADR/PODADRESAR spojte do jednoho souboru ~/ADR/PODADRESAR/prvniaposledni.
  7. Smažte soubory v ~/ADR/PODADRESAR kromě prvniaposledni.
  8. Do souboru ~/ADR/PODADRESAR/pocet uložte počet souborů a adresářů v ~/ADR.
  9. Vypište dlouhé informace o adresáři ~/ADR/PODADRESAR, ne jeho obsah.
  10. Vymažte obsah souboru ~/ADR/PODADRESAR/prvniaposledni bez toho, abyste smazali tento soubor.
  11. Do souboru ~/ADR/PODADRESAR/prvniaposledni přidejte řádku, jež obsahuje jen znak hvězdičky, tj *.
  12. Smažte ~/ADR i se všemi soubory a podadresáři v něm umístěnými.
  13. (Ukázat řešení předchozích příkladů)

    Fatal error: Uncaught Error: Call to undefined function create_function() in /home/kucerap/public_html/include/geshi.php:4698 Stack trace: #0 /home/kucerap/public_html/include/geshi.php(4621): GeSHi->_optimize_regexp_list_tokens_to_string() #1 /home/kucerap/public_html/include/geshi.php(1655): GeSHi->optimize_regexp_list() #2 /home/kucerap/public_html/include/geshi.php(2029): GeSHi->optimize_keyword_group() #3 /home/kucerap/public_html/include/geshi.php(2168): GeSHi->build_parse_cache() #4 /home/kucerap/public_html/include/geshi.php(4728): GeSHi->parse_code() #5 /home/kucerap/public_html/unix/index.php(249): geshi_highlight() #6 {main} thrown in /home/kucerap/public_html/include/geshi.php on line 4698