<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="summary.xsl" ?>
<g desc="Shell">
    <g desc="help" >
        <e>man</e>
        <e>whatis</e>
        <e extra="1">apropos</e>
        <e>… -h</e>
    </g>
    <g desc="paths" >
        <g>
            <t>root dir</t>
            <t>home dir</t>
        </g>
        <e>/</e>
        <e>./</e>
        <e>../</e>
        <e>~/</e>
        <g desc="wildcard">
            <e>*</e>
            <e>?</e>
            <e>[…]</e>
        </g>
        <g desc="whitespace...">
            <e>\ </e>
            <e>"…"</e>
            <e>'…'</e>
        </g>
    </g>
    <g desc="file info">
        <e>ls</e>
        <e>ls -l</e>
        <e>ls -a</e>
        <e extra='1'>tree</e>
        <e>stat</e>
    </g>
    <g desc="working directory">
        <e>pwd</e>
        <e>cd</e>
        <g extra='1'>
            <e>pushd</e>
            <e>popd</e>
            <e>dirs</e>
        </g>
    </g>
    
    <e>history</e>
    
    <g desc="console text editors">
        <t>pick your favourite…</t>
    </g>

    <g>
        <e>mkdir</e>
        <e>rmdir</e>
    </g>
    
    <g desc="copy/move/(sym)link">
        <e>cp</e>
        <e>cp -a</e>
        <e>ln</e>
        <e>ln -s</e>
        <e>mv</e>
    </g>
        
    <g desc="removing">
        <e>rm</e>
        <e>rm -r</e>
        <e>rm -f</e>
    </g>
    
    <g desc="remote access">
        <e>ssh user@host</e>
        <e extra="1">scp … user@host:file …</e>
        <e extra="1">sftp</e>
    </g>
    
    
    <g>
        <e>time</e>
        <e>sleep</e>
        <e extra='1'>timeout</e>
    </g>
    
    <g desc="terms regarding processes">
        <t>pid</t>
        <t>ppid</t>
        <t>parent</t>
        <t>child</t>
        <t>zombie</t>
    </g>
    <g desc="info on processes">
        <e>ps</e>
        <e>ps -e</e>
        <e>ps -l</e>
        <e>ps -f</e>
        <e>pstree</e>
        <e extra='1'>/proc/…</e>
        <e extra='1'>top</e>
        <e extra='1'>htop</e>
    </g>
    <g>
        <e>kill</e>
        <e>kill -SIG…</e>
        <g desc="signals">
            <t>INT</t>
            <t>TERM</t>
            <t>KILL</t>
            <t>STOP</t>
            <t>CONT</t>
        </g>
    </g>
    <g desc="… by name">
        <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 extra='1' desc="control over scheduling">
        <e>nice</e>
        <e>renice</e>
        <e>taskset</e>
        <e>ionice</e>
        <e>numactl</e>
    </g>
    
    <g desc="user name/groups">
        <e>whoami</e>
        <e>groups</e>
        <e extra="1">id</e>
    </g>
    <e>passwd</e>
    <g desc="multi-user" extra="1">
        <e>w -n</e>
        <e>who</e>
        <e>last</e>
        <e>write</e>
        <e>mesg</e>
        <e>wall</e>
    </g>
    <e>su</e>
    <g desc="permissions">
        <g desc="regular files">
            <e>r</e>
            <e>w</e>
            <e>x</e>
            <e extra="1">suid</e>
            <e extra="1">sgid</e>
        </g>
        <g desc="directories">
            <e>r</e>
            <e>w</e>
            <e>x</e>
            <e extra="1">sticky</e>
        </g>
    </g>
    <g desc="setting up permisions">
        <e>umask</e>
        <e>chmod</e>
        <t>octal numbers</t>
        <t>symbolic</t>
    </g>
    <g desc="changing owner" extra="1">
        <e>chgrp</e>
        <e>chown</e>
    </g>
    <e>touch</e>
    
    <g desc="displaying files">
        <g desc="text">
            <e>cat</e>
            <e>paste</e>
            <e extra='1'>join</e>
            <e extra='1'>fold</e>
            <e extra='1'>column -t</e>
        </g>
        <g desc="binary" extra='1'>
            <e>od</e>
            <e>hexdump</e>
            <e>xxd</e>
        </g>
    </g> 
    <g desc="printing text">
        <e>echo</e>
        <e>printf</e>
    </g>
    <e>seq</e>
    <g desc="redirections">
        <g desc="output">
            <e>&gt;</e>
            <e>&gt;&gt;</e>
            <e>2&gt;</e>
            <e>&amp;&gt;</e>
        </g>
        <g desc="input">
            <e>&lt;</e>
            <e>&lt;&lt; EOF</e>
            <e>&lt;&lt;&lt;</e>
        </g>
        <e>/dev/null</e>
    </g>
    
    <g desc="pipes">
        <e>  |  </e>
        <e>mkfifo</e>
    </g>
    <g desc="selected lines">
        <g desc="first/last">
            <e>head</e>
            <e>tail</e>
            <e>tail -f</e>
        </g>
        <g desc="by regex">
            <e>grep</e>
        </g>
    </g>
    <g desc="selected words/bytes of each line">
        <e>cut -s … -f …</e>
        <e>cut -b …</e>
    </g>
    <e>sort</e>
    <g desc="counting">
        <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>
        <e>tr</e>
        <e extra="1">sed</e>
    </g>
    <e extra="1">awk</e>
    <g desc="pagers">
        <e>more</e>
        <e>less</e>
    </g>
    <e>tee</e>
    <g desc="searching files">
        <e>locate</e>
        <g desc="find">
            <e>find</e>
            <t>by name/path</t>
            <t>by owner/perms</t>
            <t>by size</t>
            <t>by dates</t>
        </g>
    </g>
    
    <g desc="shell script">
        <t>shebang</t>
        <t>perms</t>
    </g>
    
    <e>. </e>
    
    <g desc="combining commands">
        <e>;</e>
        <e>&amp;</e>
        <e>&amp;&amp;</e>
        <e>||</e>
        <e>{ … ; }</e>
        <e>(…)</e>
    </g>
    
    <g desc="job control">
        <t>Ctrl+Z</t>
        <e>… &amp;</e>
        <e>jobs</e>
        <e>fg</e>
        <e>bg</e>
        <e extra="1">wait</e>
    </g>
    
    <g desc="variables">
        <e>X=5</e>
        <e>$X</e>
        <e>${X}</e>
        <e>export X</e>
        <g desc="args">
            <e>$1, $2, …</e>
            <e>$#</e>
            <e>"$@"</e>
            <e extra="1">"$*"</e>
            <e extra="1">$*</e>
            <e extra="1">$@</e>
        </g>
        <g desc="special">
            <e>$0</e>
            <e>$$</e>
            <e>$!</e>
            <e>$?</e>
        </g>
        <g desc="noteworthy">
            <e>$PATH</e>
            <e>$RANDOM</e>
        </g>
    </g>
    
    <g>
        <e>env</e>
        <e>set</e>
        <e extra="1">unset</e>
    </g>
    
    <g desc="maths">
        <e>$((…))</e>
    </g>
    
    <g desc="command substitution">
        <e>$(…)</e>
        <e extra="1">`…`</e>
    </g>
    <e>alias</e>
    <e>read</e>
    <g desc="logical expressions">
        <e>test …</e>
        <e>[ … ]</e>
        <g desc="tests on …">
            <t>text</t>
            <t>numbers</t>
            <t>files</t>
        </g>
    </g>
    <g desc="conditional">
        <e>if …</e>
        <e>then …</e>
        <e extra="1">elif …</e>
        <e>else …</e>
        <e>fi</e>
    </g>
    <g desc="selection">
        <e>case … in</e>
        <e>…) … ;;</e>
        <e>esac</e>
    </g>
    <g desc="loops">
        <g desc="over a list of words">
            <e>for … in …</e>
        </g>
        <g desc="as long as condition holds">
            <e>while …</e>
            <e>until …</e>
        </g>
        <g desc="loop body">
            <e>do …</e>
            <e>done</e>
        </g>
        <e>break</e>
        <e>continue</e>
    </g>
    <g desc="functions">
        <e>myName(){ … ; }</e>
        <e>return</e>
    </g>
    
    <e>exit</e>
    
    <g>
        <e>trap "…" SIG…</e>
        <e>trap "…" EXIT</e>
    </g>
    <e>.bashrc</e>
</g>

