<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="summary.xsl" ?>
<everything>
<g desc="Pierwsza część laboratoriów">
    <g desc="pomoc" >
        <e>man</e>
        <e>whatis</e>
        <e>… -h</e>
    </g>
    <g desc="ścieżki" >
        <e>/</e>
        <e>./</e>
        <e>../</e>
        <e>~/</e>
        <g desc="wildcard">
            <e>*</e>
            <e>?</e>
            <e>[…]</e>
        </g>
        <g desc="spacje...">
            <e>\ </e>
            <e>"…"</e>
            <e>'…'</e>
        </g>
    </g>
    <g desc="informacje o plikach">
        <e>ls</e>
        <e>ls -l</e>
        <e>ls -a</e>
        <e extra='1'>tree</e>
        <e>stat</e>
    </g>
    <g desc="katalog roboczy">
        <e>pwd</e>
        <e>cd</e>
        <g extra='1'>
            <e>pushd</e>
            <e>popd</e>
            <e>dirs</e>
        </g>
    </g>

    <g>
        <e>mkdir</e>
        <e>rmdir</e>
    </g>
    
    <g desc="przenoszenie/kopiowanie/(sym)linki">
        <e>cp</e>
        <e>cp -a</e>
        <e>ln</e>
        <e>ln -s</e>
        <e>mv</e>
    </g>
        
    <g desc="usuwanie">
        <e>rm</e>
        <e>rm -r</e>
        <e>rm -f</e>
    </g>
    
    <g desc="zdalna maszyna">
        <e>ssh user@host</e>
        <e>scp … user@host:file …</e>
        <e>sftp</e>
    </g>
    
    <g desc="moja nazwa/grupy">
        <e>whoami</e>
        <e>groups</e>
        <e extra="1">id</e>
    </g>
    <e>passwd</e>
    <g desc="multi-user">
        <e>w -n</e>
        <e extra="1">who</e>
        <e>last</e>
        <e>write</e>
        <e>mesg</e>
        <e extra="1">wall</e>
    </g>
    <e>su</e>
    <g desc="uprawnienia">
        <g desc="plików">
            <e>r</e>
            <e>w</e>
            <e>x</e>
            <e>suid</e>
            <e>sgid</e>
        </g>
        <g desc="katalogów">
            <e>r</e>
            <e>w</e>
            <e>x</e>
            <e>sticky</e>
        </g>
    </g>
    <g desc="ustawianie uprawnień">
        <e>umask</e>
        <e>chmod</e>
        <t>numerycznie</t>
        <t>symbolicznie</t>
    </g>
    <g desc="zmiana właściciela">
        <e>chgrp</e>
        <e>chown</e>
    </g>
    <e>touch</e>
    
    <g>
        <e>time</e>
        <e>sleep</e>
        <e extra='1'>timeout</e>
    </g>
    
    <g desc="terminy dotyczące procesów">
        <t>pid</t>
        <t>ppid</t>
        <t>parent</t>
        <t>child</t>
        <t>zombie</t>
    </g>
    <g desc="informacje o procesach">
        <e>ps</e>
        <e>ps -e</e>
        <e>ps -l</e>
        <e>ps -f</e>
        <e>pstree</e>
        <e>/proc/…</e>
        <e extra='1'>top</e>
        <e extra='1'>htop</e>
    </g>
    <g>
        <e>kill</e>
        <e>kill -SIG…</e>
        <g desc="sygnały">
            <t>INT</t>
            <t>TERM</t>
            <t>KILL</t>
            <t>STOP</t>
            <t>CONT</t>
        </g>
    </g>
    <g desc="szukanie/wysyłanie sygnału po nazwie">
        <g>
            <e>pgrep</e>
            <e>pkill</e>
            <e>-f</e>
        </g>
        <e extra='1'>pidof</e>
        <e extra='1'>killall</e>
        <t>-SIG…</t>
    </g>
    <g desc="zarządzanie zadaniami w tej powłoce">
        <t>Ctrl+Z</t>
        <e>… &amp;</e>
        <e>jobs</e>
        <e>fg</e>
        <e>bg</e>
        <e>wait</e>
    </g>
    <g>
        <e>nice</e>
        <e>renice</e>
        <e extra='1'>taskset</e>
        <e extra='1'>ionice</e>
        <e extra='1'>numactl</e>
    </g>
    <g desc="wyświetlanie plików">
        <g desc="tekstowych">
            <e>cat</e>
            <e>paste</e>
            <e extra='1'>join</e>
            <e>fold</e>
            <e>column -t</e>
        </g>
        <g desc="binarnych">
            <e>od</e>
            <e>hexdump</e>
            <e>xxd</e>
        </g>
    </g> 
    <g desc="wyświetlanie tekstu">
        <e>echo</e>
        <e>printf</e>
    </g>
    <e>seq</e>
    <g desc="przekierowania">
        <g desc="wyjścia">
            <e>&gt;</e>
            <e>&gt;&gt;</e>
            <e>2&gt;</e>
            <e>&amp;&gt;</e>
        </g>
        <g desc="wejścia">
            <e>&lt;</e>
            <e>&lt;&lt; EOF</e>
            <e>&lt;&lt;&lt;</e>
        </g>
        <e>/dev/null</e>
    </g>
</g>
<g desc="Druga część laboratoriów">
    
    <g desc="szukanie plików">
        <e>locate</e>
        <g desc="find">
            <e>find</e>
            <g desc="szukanie po …">
                <t>nazwie/ścieżce</t>
                <t>rodzaju pliku</t>
                <t>uprawieniach</t>
                <t>rozmiarze</t>
                <t>datach</t>
            </g>
            <g desc="akcje">
                <e>-print</e>
                <e extra="1">-print0</e>
                <e extra="1">-delete</e>
                <e>-exec</e>
            </g>    
        </g>
    </g>

    <g desc="edytory tekstu">
        <e>vi</e>
        <e extra="1">vim</e>
        <e extra="1">emacs</e>
        <e extra="1">nano</e>
        <e extra="1">mcedit</e>
        <t>…</t>
    </g>

    <g desc="potoki">
        <e>  |  </e>
        <e>mkfifo</e>
    </g>
    
    <g desc="odfiltrowanie lini">
        <g desc="na początku/końu pliku">
            <e>head</e>
            <e>tail</e>
            <e>tail -f</e>
        </g>
        <g desc="wyrażeniem regularnym">
            <e>grep</e>
            <t>gramatyka wyrażeń</t>
        </g>
    </g>
    <g desc="odfiltrowanie znaków/pól z każdej linii">
        <e>cut -s … -f …</e>
        <e>cut -b …</e>
    </g>
    
    <g desc="sortowanie">
        <e>sort</e>
        <t>numeryczne</t>
        <t>wybór klucza</t>
    </g>
    
    <g desc="liczenie">
        <e>wc</e>
        <e>uniq</e>
        <e extra="1">nl</e>
    </g>
    
    <g extra="1">
        <e extra="1">tac</e>
        <e extra="1">rev</e>
    </g>
    
    <g desc="podmiana">
        <e>tr</e>
        <e extra="1">sed</e>
    </g>
    <e extra="1">awk</e>
    
    <g desc="pagery">
        <e>more</e>
        <e>less</e>
    </g>
    
    <e>tee</e>
    
    <g desc="łączenie komend">
        <e>;</e>
        <e>&amp;</e>
        <g desc="warunkowe">
            <e>&amp;&amp;</e>
            <e>||</e>
        </g>
        <g desc="grupowanie">
            <e>{ … ; }</e>
            <e>(…)</e>
        </g>
    </g>
    
    <g desc="cudzysłowy">
        <e>"…"</e>
        <e>'…'</e>
        <e extra="1">$'…'</e>
        <t>cudzysłowy a podstawienia</t>
    </g>
    
    <g desc="zmienne">
        <e>X=5</e>
        <e>$X</e>
        <e>${X}</e>
        <e>export X</e>
        <e extra="1">unset X</e>
        <g desc="lista">
            <e>set</e>
            <e>env</e>
        </g>
        <g desc="istotne zmienne">
            <e>$PATH</e>
            <e>$RANDOM</e>
            <t extra="1">i inne</t>
        </g>
        <g>
            <e>${#X}</e>
            <e>${X:…}</e>
            <e>${X%…}</e>
            <e>${X#…}</e>
        </g>
    </g>
    
    <g desc="matematyka">
        <e>$((…))</e>
        <e extra="1">((…))</e>
        <e extra="1">let …</e>
    </g>
    
    <g desc="wynik komendy">
        <e>$(…)</e>
        <e extra="1">`…`</e>
    </g>
    
    <g desc="aliasy">
        <e>alias</e>
        <e>alias …</e>
        <e extra="1">unalias …</e>
    </g>
</g>
<g desc="Trzecia część laboratoriów - shell">
    <g desc="tworzenie skryptu">
        <e>#!/bin/sh</e>
        <e>chmod +x</e>
    </g>
    <g desc="zmienne c.d.">
        <g desc="pozycyjne">
            <e>$1, $2, …</e>
            <e>$#</e>
            <e>$*</e>
            <e extra="1">$@</e>
            <e extra="1">"$*"</e>
            <e>"$@"</e>
            <e>shift</e>
        </g>
        <g desc="specjalne">
            <e>$0</e>
            <e>$$</e>
            <e>$!</e>
            <e>$?</e>
        </g>
    </g>
    
    <g desc="porównania, sprawdzanie plików">
        <g>
            <e>test …</e>
            <e>[ … ]</e>
            <g desc="testy na …">
                <t>tekście</t>
                <t>liczbach</t>
                <t>plikach</t>
            </g>
        </g>
        <e extra="1">[[…]]</e>
        <e extra="1">((…))</e>
    </g>

    <g desc="wyrażenia warunkowe">
        <e>if …</e>
        <e>then …</e>
        <e extra="1">elif …</e>
        <e>else …</e>
        <e>fi</e>
    </g>

    <g desc="instrukcja wyboru">
        <e>case … in</e>
        <e>…) … ;;</e>
        <e>esac</e>
    </g>

    <g desc="pętle">
        <g desc="po liście elementów">
            <e>for … in …</e>
            <e extra="1">for …</e>
        </g>
        <g desc="dopóki warunek jest spełniony">
            <e>while …</e>
            <e>until …</e>
        </g>
        <g desc="wyboru użytkownika z listy">
            <e>select … in …</e>
        </g>
        <g desc="ciało pętli">
            <e>do …</e>
            <e>done</e>
        </g>
        <e>break</e>
        <e>continue</e>
        <g>
            <e extra="1">… | while read … ; do…; done</e>
            <e extra="1">while read … ; do…; done &lt;&lt; …</e>
        </g>
    </g>

    <e>read</e>
    <e extra="1">$REPLY</e>

    <g desc="funkcje">
        <e>nazwa(){ … ; }</e>
        <e extra="1">local</e>
        <e>return</e>
    </g>

    <e>exit</e>

    <g>
        <e>trap "…" SIG…</e>
        <e>trap "…" EXIT</e>
    </g>
    
    <g>
        <e>.</e>
        <e extra="1">source</e>
    </g>
    
    <g>
        <e>eval</e>
        <e>exec</e>
    </g>
    <e>yes</e>
    <g>
        <e>basename</e>
        <e>dirname</e>
    </g>
    <e extra="1">fc</e>
    <e>xargs</e>
</g>
<g desc="Trzecia część laboratoriów - programowanie">
    
    <g extra="1" desc="kompilacja">
        <e>cc prog.c -o prog</e>
    </g>
    
    <g desc="obsługa błędów">
        <t>jak sprawdzić czy funkcja zakończyła się błędem</t>
        <e>errno</e>
        <e>strerror</e>
        <e>perror</e>
    </g>
    <g desc="zapis/odczyt danych">
        <e>read</e>
        <e>write</e>
    </g>
    <e>lseek</e>
    <g desc="otwieranie/zamykanie plików">
        <e>open</e>
        <g>
            <g desc="wybór odczytu i/lub zapisu">
                <e>O_RDONLY</e>
                <e>O_WRONLY</e>
                <e>O_RDWR</e>
            </g>
            <g desc="tworzenie pliku">
                <e>O_CREAT</e>
                <e>O_EXCL</e>
            </g>
            <e>O_APPEND</e>
            <e>O_TRUNC</e>
        </g>
        <t>prawa dostępu</t>
        <e>creat</e>
        <e>close</e>
    </g>
    <g desc="usuwanie">
        <e>unlink</e>
    </g>
    <g desc="stałe deskryptory plików">
        <e>0</e>
        <e extra="1">STDIN_FILENO</e>
        <e>1</e>
        <e extra="1">STDOUT_FILENO</e>
        <e>2</e>
        <e extra="1">STDERR_FILENO </e>
    </g>
    <g desc="duplikowanie deskryptorów">
        <e>dup</e>
        <e>dup2</e>
    </g>
    <g desc="zmiana rozmiaru">
        <e>truncate</e>
        <e>ftruncate</e>
    </g>
    <t>gdzie znaleźć potrzebne #include&lt;…&gt;</t>
</g>
</everything>
