2. Cvičení z Úvodu do UNIXu (2. 3. 2017)
Obsah
Opakování z minula -- co byste měli umět
- Vypište: Hello, world!
- Vypište: Hello, world! (se dvěma mezerami)
- Vytvořte adresář test (ve svém domovském adresáři)
- Smažte adresář test
- Přečtěte obsah souboru /etc/fstab
Základy v terminálu -- co jsem zatím neprozradil
- Historie má omezenou kapacitu (většinou kolem 500 řádek), lze to přenastavit viz proměnná HISTSIZE (v man bash)
- Ctrl + Z -- pozastavení aktuální úlohy (je možné znovu spustit pomocí fg a bg)
- V manuálových stránkách lze vyhledávat pomocí klávesy / (další výskyt klávesou n).
Nové přepínače
- ls -d -- výpis adresáře samotného (a nikoli jeho obsahu)
- ls -i -- vypíše navíc číslo inode každéúo souboru
- ls -R -- rekurzivní výpis (pokud chcete výstup zpracovávat strojově, použijete asi častěji příkaz find)
- echo -n -- po vypsání neodřádkuj
- echo -e -- povolení escape sekvencí (například \n -- newline; \r skok na začátek řádky, další viz man echo)
- mkdir -p -- vytvoření celé cesty (např. mkdir -p skola/mff/unix/cviceni02/)
- man -k <hledaný řetězec> -- hledání ve všech manuálových stránkách
Nové příkazy
- less (/, n, q) a more -- stránkování dlouhého výstupu na obrazovku
- pwd -- zjištění aktuálního pracovního adresáře
- whoami -- kdo jsem?
- who -- kdo je přihlášený
- date -- aktuální čás a datum, umí datum formátovat
- ps -- seznam procesů
- last -- seznam naposledy přihlášených uživatelů
- tac -- přehození pořadí řádku (Pozor, není součástí POSIXu!)
- rev -- přehození pořadí znaků na řádku (Pozor, není součástí POSIXu!)
- sort -- lexikografické seřazení řádků (s přepínači řadí i jinak)
- uniq -- vyřazení duplicit v setřízeném vstupu
- tr -- nahrazení znaků za jiné (vyzkoušejte si třeba zavolat příkaz: tr ahoj bagr)
- (cut, join, wc) ... Necháme si na příště
Zajímavé soubory:
- / -- kořen (root) souborovéúo stromu
- ~ -- domovský adresář aktuálního uživatele (syntaktická zkratka třeba za /home/had)
- . -- aktuální pracovní adresář
- .. -- nadřazený adresář
- .cokoli -- skrytý soubor
Speciální znaky a expanze
Tyto speciální znaky interpretuje shell a nahradí je ještě před spuštěním příkazu.
- ~ -- domovský adresář aktuálního uživatele (nahradí se například za /home/had)
- * -- nahradí se za všechny (neskryté) soubory v aktuálním adresáři
- */* -- funguje i rekurzivně
- /* -- použitelné i na absolutní cesty
- .* -- expanze i na skryté soubory
Přesměrování a roura
- cat < soubor -- přesměrování vstupu ze souboru
- echo ahoj > soubor -- přesměrování výstupu do souboru
- echo ahoj >> soubor -- append do souboru
- echo ahoj 2> soubor -- přesměrování chybového výstupu do souboru
- echo ahoj | cat -- roura (pipe) napojení výstupu z echo na vstup cat
Příklady
-
Najděte v manuálu bashe informace o HISTSIZE.
-
Vypište aktuální datum ve formátu DD. MM. YYYY a zapište je do souboru datum.
-
Napište skript, který vyhledá všechna data v souboru zapsaná ve formátu MM. DD. YYYY a převede je do formátu DD/MM/YYYY.
-
Vypište do souboru dir obsah aktuálního adresáře. Je v tomto seznamu soubor dir? Vysvětlete proč.
-
Pomocí echo vyrobte soubor s více řádky. Zkuste vymyslet více způsobů.
-
Z textového souboru a vytvořte soubor b tak, aby se b skládal z prvních 11 a posledních 4 řádků souboru a.
Příklady pro pokročilé
-
Vypište posledních 10 přihlášených uživatelů na vašem počítači, v pořadí dle času jejich posledního přihlášení.
-
Stáhněte si nějakou webovou stránku a vypištw z ní všechny odkazy. Může se vám hodit příkaz wget nebo curl na stahování.