\documentclass[twocolumn]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\usepackage{colortbl}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{hyperref}

\setlength\parindent{0pt}
\setlength\parskip{\medskipamount}
\setlength{\oddsidemargin}{-15mm}
\setlength{\paperwidth}{210mm}
\setlength{\paperheight}{297mm}
\setlength{\textwidth}{190mm}
\setlength{\textheight}{257mm}

\renewcommand*\familydefault{\sfdefault}

\pagestyle{scrheadings}
\clearscrheadings
\clearscrplain
\lohead{Linux-Kurs {\number\year} -- Befehlsreferenz}
\rohead{Hier könnte dein Name stehen}

% Die dunkle Variante
\definecolor{cmdtitlebg}{rgb}{0.05,0.05,0.3}
\definecolor{cmdtitlefg}{rgb}{1,1,1}

\newcommand{\cmdfmt}[1]{\texttt{#1}}
\newcommand{\parfmt}[1]{\texttt{\textsl{#1}}}
\newcommand{\keyfmt}[1]{\textnormal{Tastenkombination \textsl{#1}}}

\newcommand{\cmdbox}[2]{
  \begin{tabularx}{\linewidth}{|lX|} \hline
  \multicolumn{2}{|l|}{\cellcolor{cmdtitlebg}\Large\rule{0ex}{1em}\textcolor{cmdtitlefg}{#1}} \\ \hline
  #2
  \hline
  \end{tabularx}
}

\newcommand{\cmd}[3]{
  \multicolumn{2}{|l|}{\cmdfmt{#1} \parfmt{#2}} \\
  \hspace{1ex} & #3 \\
}

\begin{document}

\cmdbox{Verzeichnisse}{
  \cmd{cd}{dir}{Wechsle ins Verzeichnis \parfmt{dir}}
  \cmd{cd}{-}{Wechsle ins zuletzt besuchte Verzeichnis}
  \cmd{ls}{}{Inhalt des aktuellen Verzeichnisses anzeigen}
  \cmd{ls}{-al}{Formatierte (\parfmt{-l}) Ausgabe inkl. versteckter Dateien (\parfmt{-a}) des aktuellen Verzeichnisses}
  \cmd{pwd}{}{Pfad des aktuellen Verzeichnisses ausgeben}
  \cmd{mkdir}{dir}{Legt das Verzeichnis \parfmt{dir} an}
  \cmd{rmdir}{dir}{L"oscht das leere(!) Verzeichnis \parfmt{dir}}
  \cmd{rm}{-r dir}{\textbf{Achtung}: L"oscht das Verzeichnis \parfmt{dir} und alle darin enthaltenen Dateien sowie Unterverzeichnisse}
  \cmd{cp}{-a dir1 dir2}{Kopiert das Verzeichnis \parfmt{dir1} in das Verzeichnis \parfmt{dir2} --
  Falls kein gleichnamiges Verzeichnis besteht, kopiert es das Verzeichnis \parfmt{dir1} nach \parfmt{dir2}}
  \cmd{mv}{dir1 dir2}{Verschiebt das Verzeichnis \parfmt{dir1} in das Verzeichnis \parfmt{dir2} --
  Falls kein gleichnamiges Verzeichnis besteht, benennt es das Verzeichnis \parfmt{dir1} in \parfmt{dir2} um}
  \cmd{chmod}{rechte dir}{"Andert die Zugriffsrechte f"ur \parfmt{dir}}
  \cmd{chmod}{-R rechte dir}{"Andert die Zugriffsrechte f"ur alle Dateien und Ordner unterhalb von \parfmt{dir} und f"ur \parfmt{dir} selbst}
}

\cmdbox{Drucken im CIP}{
  \multicolumn{2}{|l|}{1. Stock: \cmdfmt{ps1acip}} \\
  \multicolumn{2}{|l|}{2. Stock: \cmdfmt{ps2ccip} (Farbdrucker), \cmdfmt{ps2acip}} \\[1.5ex]
  \multicolumn{2}{|X|}{F"ur weitere Hinweise (doppelseitig drucken) bitte die Anleitungen "uber den Druckern beachten!} \\
  & \\
  \cmd{cip-printer-balance}{}{Zeigt das aktuelle Druckguthaben im CIP an}
  \cmd{lpr}{-Pdrucker datei}{Druckt die Datei \parfmt{datei} auf dem Drucker \parfmt{drucker} aus}
  \cmd{lpq}{-Pdrucker}{Zeigt die Warteschlange des Druckers \parfmt{drucker} an}
  \cmd{lprm}{-Pdrucker jobnr}{L"oscht den Druckauftrag mit der Nummer \parfmt{jobnr} aus der Warteschlange des Druckers \parfmt{drucker}}
  \cmd{lprm}{-a}{L"oscht \textbf{alle} Druckauftr"age des aktuellen Benutzers aus \textbf{allen} Druckerwarteschlagen}
}

\cmdbox{Dateien}{
  \cmd{ls}{-l datei}{Formatierte Ausgabe vieler Informationen über die Datei \parfmt{datei}}
  \cmd{ls}{dat* *ei}{Listet alle Dateien auf, deren Name mit \parfmt{dat} beginnt oder mit \parfmt{ei} aufhört}
  \cmd{touch}{datei}{Legt eine leere Datei mit den Namen \parfmt{datei} an}
  \cmd{rm}{datei}{L"oscht die Datei \parfmt{datei}}
  \cmd{rm}{-i *.pdf}{L"oscht alle PDF-Dateien auf Nachfrage}
  \cmd{cp}{datei dir}{Kopiert die Datei in das existierende Verzeichnis \parfmt{dir}}
  \cmd{cp}{datei1 datei2}{Legt eine Kopie der Datei \parfmt{datei1} unter dem Namen \parfmt{datei2} an}
  \cmd{mv}{datei dir}{Verschiebt die Datei \parfmt{datei} in das Verzeichnis \parfmt{dir}}
  \cmd{mv}{datei1 datei2}{Benennt die Datei \parfmt{datei1} in \parfmt{datei2} um}
  \cmd{chmod}{rechte datei}{"Andert die Zugriffsrechte (augo$\pm$rwx) f"ur \parfmt{datei}}
  \cmd{cip-quota}{}{Zeigt an, wie viel Speicherplatz man im CIP noch zur Verf"ugung hat}
  \cmd{baobab}{$\sim$}{Zeigt an, welche Dateien besonders viel Platz belegen}
  \cmd{ncdu}{$\sim$}{Analog, aber terminalbasiert}
}

\cmdbox{Chat}{
	\cmd{weechat}{}{Konsolenbasierter IRC-Client, eine Anleitung findet sich unter \url{https://fsv.tf/irc}}

}

\cmdbox{Packer}{
  \multicolumn{2}{|l|}{\cmdfmt{tar} \parfmt{xvf archiv.tar.gz}} \\
  \cmd{tar}{xvf archiv.tar.bz2}{Entpackt ein komprimiertes Archiv ins aktuelle Verzeichnis}
  \multicolumn{2}{|l|}{\cmdfmt{tar} \parfmt{cavf archiv.tar.gz dir}} \\
  \cmd{tar}{cavf archiv.tar.bz2 dir}{Packt das Verzeichnis \parfmt{dir} in das gzip- oder bzip2-komprimierte Archiv}
  \cmd{unp}{archiv}{Entpackt das Archiv \parfmt{archiv} -- geht auch für .zip-Archive}
}

\cmdbox{Betrachter}{
  \cmd{evince}{datei}{"Offnet die PDF-Datei \parfmt{datei}}
  \cmd{acroread}{datei.pdf}{"Offnet die PDF-Datei \parfmt{datei.pdf}}
  \cmd{less}{textdatei}{Zeigt den Inhalt von \parfmt{textdatei} seitenweise an}
  \cmd{gpicview}{datei}{Zeigt die Bilddatei \parfmt{datei} an}
  \cmd{xdg-open}{datei}{Zeigt den Inhalt von \parfmt{datei} mit einem passenden Programm an}
}

\cmdbox{www}{
  \cmd{wget}{url}{L"adt die angegebene \parfmt{url} herunter}
  \cmd{chromium}{}{"Offnet den Browser Chrome}
  \cmd{firefox}{}{"Offnet den Browser Firefox}
}

\cmdbox{Suchen}{
	\cmd{find}{dir -name dateiname}{Sucht im Verzeichnis \parfmt{dir} (und dessen Unterverzeichnissen) nach einer Datei mit dem Namen \parfmt{dateiname}}
  \cmd{find}{dir -name "*ausdruck*"}{Sucht im Verzeichnis \parfmt{dir} (und dessen Unterverzeichnissen) nach einer Datei deren Name \parfmt{ausdruck} enth"alt}
  \cmd{grep}{ausdruck datei}{Sucht in der Datei \parfmt{datei} zeilenweise nach dem Ausdruck \parfmt{ausdruck}}
  \cmd{grep}{-r ausdruck}{Durchsucht alle im aktuellen Verzeichnis enthaltene Dateien sowie Unterverzeichnisse nach dem Ausdruck \parfmt{ausdruck}}
  \cmd{befehl | grep}{ausdruck}{Sucht in der Ausgabe des Befehls \cmdfmt{befehl} nach dem Ausdruck \parfmt{ausdruck}}
}

\cmdbox{Prozesse}{
  \cmd{htop}{}{Zeigt die gerade aktiven Prozesse an}
  \cmd{ps}{xu}{Zeigt deine gerade aktiven Prozesse an}
  \cmd{kill}{pid}{Beendet den Prozess mit der ID \parfmt{pid}}
  \cmd{killall}{name}{Beendet alle Prozesse mit dem Namen \parfmt{name}}
  \cmd{\keyfmt{Ctrl-c}}{}{Beendet den aktuell laufenden Prozess}
  \cmd{jobs, bg, fg, \keyfmt{Ctrl-z}}{}{Hintergrundprozesse -- siehe \cmdfmt{man bash}}
}

\cmdbox{Hilfe}{
  \cmd{man}{kommando}{Zeigt die Manpage zum Befehl \parfmt{kommando} an}
  \cmd{apropos}{stichwort}{Sucht in der Hilfedatenbank nach dem Stichwort \parfmt{stichwort}}
}

\cmdbox{SSH}{
  \cmd{ssh}{user@host}{Programm um verschl"usselt aus der Ferne auf einen PC zuzugreifen}
  \cmd{scp}{quelle ziel}{Kopiert die Datei \parfmt{quelle} nach \parfmt{ziel}. Dabei k"onnen sowohl \parfmt{quelle} also auch \parfmt{ziel} das Format \parfmt{user@host:datei} haben}
  \cmd{scp}{-r quelle ziel}{Kopiert den Ordner \parfmt{quelle} nach \parfmt{ziel}. Dabei k"onnen sowohl \parfmt{quelle} also auch \parfmt{ziel} das Format \parfmt{user@host:datei} haben}
}

\cmdbox{Shell}{
  \cmd{alias}{}{Zeigt alle bestehenden Befehlsaliase an}
  \cmd{alias}{aliasname="befehl"}{Erstellt ein neues Alias mit dem Namen \parfmt{aliasname}. Beim Aufruf von \parfmt{aliasname} wird der Befehl \parfmt{befehl} ausgef"uhrt}
  \cmd{$\sim$/.bashrc}{}{Konfigurationsdatei für die Shell -- hier können Aliase dauerhaft eingetragen werden}
  %TODO bashrc
}

\cmdbox{Virtuelle Terminals}{
  \cmd{tmux}{}{Startet eine Shell in einem neuen virtuellen Terminal}
  \cmd{\keyfmt{Ctrl-b d}}{}{Trennt die Verbindung zur laufenden tmux-Session --
  alle gestarteten Programme laufen im Hintergrund weiter}
  \cmd{tmux}{attach}{Verbindet sich zu einer bestehenden tmux-Session}
}

\cmdbox{Editoren}{
  \cmd{gedit}{datei}{"Offnet das Text-File \parfmt{datei} mit dem Editor Gedit}
  \cmd{kate}{datei}{"Offnet das Text-File \parfmt{datei} mit dem Editor Kate}
  \cmd{nano}{datei}{"Offnet das Text-File \parfmt{datei} mit dem Terminal-Editor Nano}
  \cmd{vim}{datei}{"Offnet das Text-File \parfmt{datei} mit dem Terminal-Editor Vim}
}

\end{document}
