%
% Unix Shell Kurs 
% $Id: unix_kurs.tex,v 1.5 2003/01/11 16:56:02 andras Exp $
%

\documentclass[12pt, a4paper, final, titlepage]{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[german]{babel}
\usepackage{german}
\usepackage{helvet}
\pagestyle{headings}
\hyphenation{Viktor Hayek}
\setlength{\parindent}{0pt}
\begin{document}
{\sffamily
        \begin{titlepage}
                \title{
			Textverarbeitung in der Unix-Shell	
		}

                \author{Peter Keel,\\ 
			Kir\'{a}ly Andr\'{a}s 
		}
        \end{titlepage}
        \maketitle
        \pagebreak

	%
        % Inhaltsverzeichnis erzeugen
        %
        \tableofcontents
        \vspace{10cm}
        \newpage

	\section{Die Shell}
	Die Shell erm"oglicht die Eingabe von Befehlen via Texteingabe 
	(Kommandozeile). Unter Unix existieren ganze Mengen dieser Shells, 
	je nach Unix wird die eine oder andere bevorzugt: \texttt{csh, tcsh, ksh, 
	bash} und \texttt{zsh}. Unter Linux normalerweise \texttt{bash}, unter MacOS X die
	\texttt{tcsh}. Die Shells unter Unix sind das "Aquivalent zur command.com 
	respektive cmd unter Windows, jedoch ungleich m"achtiger. 

	\subsection{Prompt}
	Das erste was man von der Shell sieht ist ein Fenster mit einem 
	Prompt, welches anzeigt dass man nun Befehle eingeben kann. Dieses
	sieht vielleicht so aus:\\

    	\texttt{bash\$}\\

	Man kann es anpassen. Der Superuser (root) hat normalerweise ein
	Octothorp (\#) statt eines Dollarzeichens (\$), und auch sonst kann
	es beliebig anpassen, dazu sp"ater mehr.\\
	Beispiele:\\ 

    	\texttt{hostname:$\sim$/verzeichnis\$}

	\subsection{Verzeichnisse}
	Unter Unix sind Verzeichnisse (Directories, Folders) durch einen
	Slash (/) getrennt. Die Schreibweise von Verzeichnissen in URLs 
	(http://www/verzeichnis/) korrespondiert auch damit, weil das 
	WWW unter Unix erfunden wurde. Es gibt keine Laufwerksbuchstaben,
	stattdessen werden alle Ger"ate und Disks irgendwo in den 
	Verzeichnisbaum eingeh"angt. Die Wurzel des Baums ist dabei das
	root-Verzeichnis ''/''. 

	\subsection{Home-Verzeichnis}
	Jeder Benutzer besitzt ein Home-Verzeichnis, welches dasjenige
	Verzeichnis ist, welches er nach dem einloggen oder dem Aufruf
	der Shell zuerst zu sehen bekommt. Es ist auch das einzige 
	Verzeichnis in dem er Schreibrechte besitzt (von Ausnahmen
	wie \texttt{/tmp} abgesehen). Es kann auch durch die Tilde ($\sim$) angezeigt
	werden. 

	\subsection{Versteckte Dateien}
	Dateien die mit einem Punkt (''.'') beginnen sind grunds"atzlich versteckte
	Dateien. Dies ist nicht vor allem aus Sicherheitsgr"unden so, sondern
	der "Ubersichtlichkeit halber, da diese im Normalfall uninteressant sind. 

	\subsection{Parameter} 
	Unix-Befehle (Kommandos,Programme) kennen viele Parameter, mit denen 
	sich einstellen l"asst wie ein Programm reagieren soll, oder auf was 
	es reagieren soll. Dabei gilt dass diese immer mit einem Leerschlag
	(Space) vom Programmnamen getrennt sein m"ussen. Optionen die das 
	Programm selber kennt, werden mit dem Dash (''$-$'') oder dem doppelten
	Dash (''$-$$-$'') vom Kommando abgetrennt. Ein typischer Parameter ist 
	''$-$h'' oder ''$-$$-$help'' um Hilfe zum Kommando zu bekommen. 

	\subsection{Wildcards}
	Wildcards sind Zeichen, die f"ur beliebige andere stehen k"onnen. Es 
	sind dies das Fragezeichen (''?'') welches f"ur EIN beliebiges anderes
	Zeichen steht, und der Stern (''*'') welcher f"ur beliebig viele andere
	Zeichen steht. Sie werden typischerweise verwendet um einem Programm
	ganz viele Dateinamen als Parameter zu "ubergeben. 

	\subsection{Gross/Kleinschreibung}
	Diese ist unter Unix wichtig. Eine Datei namens "Datei" ist durchaus
	nicht dieselbe wie die Datei namens ''datei'' oder die andere namens 
	''DATEI'', oder "DaTei" oder ''DatEi'' usf.. 

	\subsection{Umleitungen}
	Mit ''$>$'' l"asst sich die Ausgabe eines Programms in eine Datei umleiten,
	respektive mit ''$<$'' die Eingabe. Die doppelte Umleitung ''$>$$>$'' f"ugt die
	Ausgabe eines Programms an einer Datei an, ohne diese zu "uberschreiben. 

	\subsection{Pipe}
	Die Pipe (''$\vert$'') erm"oglicht es die Ausgabe eines Kommandos direkt
	einem anderen Kommando zu "ubergeben. Derselbe Effekt kann durch die Umleitung
	in eine Datei und das Lesen aus dieser erreicht werden, doch mit der
	Pipe geht das ohne Umweg.

	\subsection{Abbrechen und Unterbechen}
	Kommandos lassen sich mit Control-C abbrechen, und mit Control-Z
	unterbrechen (und in den Hintergrund schieben). 

	\subsection{Commandline-Completion}
	Wenn man den Anfang eines Kommandos oder Dateinamens weis, kann man 
	durch Eingabe der ersten paar Buchstaben und die Tabulator-Taste 
	den Namen automatisch komplettieren lassen. Dies geht in den meisten
	modernen shells. ''tou$<$tab$>$'' wird also automatisch zu ''touch'' expandiert.

	\section{Kommandos -- Navigation im System}

	\subsection{pwd}
	\textit{Print Working Directory}\\ 
	Dieses Kommando zeigt uns an wo im Verzeichnisbaum wir uns befinden.\\

   	\texttt{hostname:$\sim$\$ pwd}\\
    	\texttt{/home/user}

	\subsection{mkdir}
	\textit{Make Directory}\\
	Damit k"onnen wir ein Verzeichnis erstellen.\\

    	\texttt{hostname:$\sim$\$ mkdir verzeichnis}

	\subsection{cd}
	\textit{Change Directory}\\
	Damit k"onnen wir nun das Verzeichnis wechseln. Der Punkt designiert
	dabei das momentane Verzeichnis, der zweifache Punkt das Vorangehende. 
	cd ohne Parameter wechselt in das home-Verzeichnis des Benutzers.\\ 

    	\texttt{hostname:$\sim$\$ cd verzeichnis}\\
   	\texttt{hostname:$\sim$/verzeichnis\$}\\
	\\
    	\texttt{hostname:$\sim$/verzeichnis\$ cd ..}\\ 
    	\texttt{hostname:$\sim$\$}\\
        \\
	oder\\
        \\
    	\texttt{hostname:$\sim$/verzeichnis\$ cd}\\ 
    	\texttt{hostname:$\sim$\$}\\

	\subsection{ls}
	\textit{List}\\
	Zeigt uns die Verzeichnisse und Dateien in einem Verzeichnis an. 
	Der wichtigste Parameter ist ''-l'', welcher ein langes Listing 
	anzeigt welches mehr informationen enth"alt. Ein weiterer wichtiger
	Parameter ist ''-a'', damit werden auch die Versteckten Dateien 
	angezeigt. Man kann die Parameter auch zusammenfassen (''-al'').\\ 

    	\texttt{hostname:$\sim$\$ ls}\\
    	\texttt{verzeichnis}\\
    	\texttt{hostname:$\sim$\$ ls -l}\\ 
    	\texttt{total 4}\\
    	\texttt{tdrwxr-xr-x    2 user     user         4096 2003-01-10 13:31 verzeichnis}\\
        \\ 
    	\texttt{hostname:$\sim$\$ ls -a}\\
    	\texttt{.  ..  .alias  .bash\_logout  .bash\_profile  .bashrc	 verzeichnis}\\
    	\\
    	\texttt{hostname:$\sim$\$ ls -al}\\
    	\texttt{total 36}\\
    	\texttt{t drwxr-xr-x    3 user     user         4096 2003-01-10 13:31 .}\\
    	\texttt{tdrwxr-xr-x  197 root     root        12288 2003-01-10 13:29 ..}\\
    	\texttt{t-rw-r--r--    1 user     user          266 1999-07-08 22:53 .alias}\\
    	\texttt{t-rw-r--r--    1 user     user          175 2000-10-02 17:09 .bash\_logout}\\
    	\texttt{t-rw-r--r--    1 user     user          556 2002-09-12 00:51 .bash\_profile}\\
    	\texttt{t-rw-r--r--    1 user     user         1263 2002-11-04 10:02 .bashrc}\\
    	\texttt{tdrwxr-xr-x    2 user     user         4096 2003-01-10 13:31 verzeichnis}\\
    
	In der langen Darstellung sehen wir auch diverse merkw"urdige Nummern
	und Namen. Der Reihe nach sind dies Filetyp und Permissions (die Rechte)
	auf die Dateien, die Gr"osse in Bl"ocken, der Besitzer, die Gruppe, die
	wirkliche Gr"osse in Bytes, das Datum der letzten Modifikation und 
	den Dateinamen.\\ 
	\newpage
	Am Beispiel:\\
	\texttt{hostname:$\sim$\$ ls -l}\\ 
    	\texttt{total 4}\\
    	\texttt{drwxr-xr-x    2 user     user         4096 2003-01-10 13:31 verzeichnis}\\

	Der erste Teil ''\texttt{drwxr-xr-x}'' sagt uns zuerst einmal den Dateityp (''\texttt{d}'') 
	n"amlich ein Verzeichnis. Dahinter folgen drei 3er-Bl"ockchen mit den Rechten.
	Zuerst kommen die Rechte des Besitzers, dann der Gruppe, und dann des 
	Rests der Welt. Jedes Bl"ockchen gibt an ob er die Datei lesen (read ''\texttt{r}''), 
	schreiben (write, ''\texttt{w}'') oder ausf"uhren (execute, ''\texttt{x}'') darf. Hier darf
	also der Besitzer lesen, schreiben und ausf"uhren, die Gruppe nur lesen
	und ausf"uhren, und der Rest der Welt ebenfalls nur lesen und ausf"uhren. 
	Speziell hier ist noch, dass das ein Verzeichnis ist, und hier gilt 
	dass "Ausf"uhren das Recht ist ins Verzeichnis zu wechseln. 

	Danach folgt die Gr"osse in Bl"ocken auf der Disk, hier also 2. 
	Die Bl"ocke sind meist 4KB gross. Das braucht uns aber jetzt nicht 
	zu interessieren. 

	Danach kommt der Besitzer (''\texttt{user}'') und die Gruppe (ebenfalls ''\texttt{user}'')
	dem die Datei geh"ort. 

	Nun kommt die Gr"osse der Datei (''\texttt{4096}'') in Bytes. In diesem Fall ist 
	das ein Verzeichnis, und als solches hat es unter Unix tats"achlich eine
	Gr"osse, weil es Platz braucht die Verzeichniseintr"age zu verwalten.

	Zum Schluss kommt noch das Datum der letzten Modifikation und der 
	Dateiname. 

	\subsection{rmdir}
	\textit{Remove Directory}\\
	Damit k"onnen wir Verzeichnisse l"oschen.\\ 

    	\texttt{hostname:$\sim$\$ ls}\\
    	\texttt{verzeichnis}\\
    	\texttt{hostname:$\sim$\$ rmdir verzeichnis}\\
    	\texttt{hostname:$\sim$\$ ls}\\
 

	\subsection{touch} 
	Unix hat keinen spezifischen Befehl zum anlegen von Dateien, deshalb muss
	ein anderes Programm herhalten. touch setzt eigentlich das Datum der
	letzten Modifikation einer Datei auf den momentanen Zeitpunkt. Falls
	die Datei aber nicht existiert, wird sie neu angelegt.\\

	\texttt{hostname:$\sim$\$ touch Datei}\\
    	\texttt{hostname:$\sim$\$ ls -l}\\ 
    	\texttt{-rw-rw-r--    1 user     user            0 2003-01-10 13:55 Datei}\\

	\subsection{cp}
	\textit{Copy}\\
	Damit k"onnen wir Dateien kopieren.\\ 

    	\texttt{hostname:$\sim$\$ ls}\\
    	\texttt{Datei}\\
    	\texttt{hostname:$\sim$\$ cp Datei Datei2}\\
    	\texttt{hostname:$\sim$\$ ls}\\
    	\texttt{Datei  Datei2}\\

	\subsection{rm}
	\textit{Remove}\\ 
	Dieser Befehl l"oscht eine Datei. Wichtige Parameter sind ''\texttt{-f}'' was 
	''force'' bedeutet und ohne nachfragen l"oscht, und ''\texttt{-r}'' was ''rekursiv''
	bedeutet und dazu benutzt werden kann ganze Verzeichnisb"aume zu l"oschen.
	Normalerweise ist es unm"oglich eine Datei danach wieder herzustellen,
	der Befehl ist also gef"ahrlich und ein ''\texttt{rm -rf *}'' k"onnte das ganze
	aktuelle Verzeichnis l"oschen.\\ 

	{\ttfamily
    		hostname:$\sim$\$ ls\\
    		Datei  Datei2\\
   		hostname:$\sim$\$ rm Datei2\\
    		hostname:$\sim$\$ ls\\
    		Datei\\
	}

	\newpage
	\subsection{mv}
	\textit{Move}\\
	Dieser Befehl dient zum verschieben oder umbenennen von Dateien.\\ 

	{\ttfamily
    		hostname:$\sim$\$ ls\\
    		Datei  Datei2  verzeichnis\\
    		hostname:$\sim$\$ mv Datei verzeichnis\\
    		hostname:$\sim$\$ mv Datei2 Datei3\\
    		hostname:$\sim$\$ ls\\    
    		Datei3  verzeichnis\\
    		hostname:$\sim$\$ ls verzeichnis\\
    		Datei\\
	}


	\section{Kommandos -- Hilfe}
    
	\subsection{man}
	\textit{Manual}\\
	Unter Unix besitzt jedes Kommando ein zugeh"origes Manual. Dieses kann
	man mit ''\texttt{man $<$Kommando$>$}'' abrufen. Vorausgesetzt man weiss zu welchem 
	Kommando man das Manual m"ochte... 


	\section{Kommandos -- Textverarbeitung}

	\subsection{cat}
	\textit{Concatenate}\\
	Mit \texttt{cat} kann man den Inhalt einer Datei anzeigen, oder mehrere Dateien
	aneinander Anf"ugen.\\ 

	{\ttfamily
    		hostname:$\sim$\$ cat > Test\\
    		1 a	AA\\
    		2 b	BB\\
    		1 a	AA\\
    		3 c	CC\\
	}
    	CTRL-C\\
	\\
	{\ttfamily
    		hostname:$\sim$\$ cat Test\\
    		1 a	AA\\
    		2 b	BB\\
    		1 a	AA\\
    		3 c CC\\
	}

	\subsection{wc}
	\textit{Word Count}\\
	\texttt{wc} z"ahlt ganz einfach wieviele Zeilen, W"orter und Zeichen ein 
	Text enth"alt.\\
    	
	{\ttfamily
    		hostname:$\sim$\$ wc Test\\
    		4      12      28 Test\\
    	}

	\subsection{more}
	Manchmal m"ochte man Dateien Seitenweise angezeigt haben (um dann 
	jedesmal ''\texttt{more}'' best"atigen k"onnen wenn man die n"achste Seite sehen
	m"ochte).

	\subsection{less}
	Eine bessere Version von ''\texttt{more}'', mit der man auch nach oben scrollen
	kann. 

	\subsection{head}
	Head zeigt nochmals die Datei an, diesmal nur den Kopf. Ein Parameter
	''\texttt{-$<$Nummer$>$}'' kann angeben werden um entsprechend viele Zeilen auszugeben;
	per default sind es 10.\\ 

	{\ttfamily
    		hostname:$\sim$\$ head -1 Test\\
    		1 a	AA\\
	}

	\subsection{tail}
	Tail ist das Gegenteil von ''\texttt{head}'' und zeigt demgem"ass das Ende der 
	Datei an, auch hier kann man mit ''\texttt{-$<$nummer$>$}'' angeben wieviele Zeilen
	man m"ochte.\\ 

	{\ttfamily
    		hostname:$\sim$\$ tail -1 Test\\
    		3 c CC\\
	}

	\subsection{sort}
	Mit \texttt{sort} k"onnen wir Dateien sortieren. Der Parameter ''\texttt{-r}'' sortiert in 
	umgekehrter Reihenfolge. Um das gew"unschte Resultat zu erhalten bedarf 
	es oft diverser weiterer Parameter.\\ 

	{\ttfamily
   	 	hostname:$\sim$\$ sort Test\\
    		1 a	AA\\
    		1 a	AA\\
    		2 b	BB\\
    		3 c	CC\\
	}
	
	\subsection{uniq} 
	Dieser Befehl stellt sicher, dass eine Zeile nur einmal vorkommt. 
	Er funktioniert jedoch nur, wenn die doppelten Zeilen aufeinanderfolgend
	sind.\\

	{\ttfamily
    		hostname:$\sim$\$ uniq Test\\
    		1 a	AA\\
    		2 b	BB\\
    		1 a	AA\\
    		3 c	CC\\
    		hostname:$\sim$\$ sort Test > Test2\\
    		hostname:$\sim$\$ uniq Test2\\
    		1 a	AA\\
    		2 b	BB\\
    		3 c	CC\\
	}

	\subsection{grep}
	Mit \texttt{grep} l"asst sich nach Dateinhalten suchen. Wichtige Parameter sind
	''\texttt{-v}'' der nach Zeilen sucht in denen das gesuchte NICHT vorkommt, und 
	''\texttt{-r}'' welches rekursiv durch den ganzen Verzeichnisbaum sucht (''\texttt{-r}'' wird
	aber nicht von allen Unix-Versionen unterst"utzt).\\ 

	{\ttfamily
   		hostname:$\sim$\$ grep BB Test2\\
    		2 b	BB\\
    		hostname:$\sim$\$ grep -v BB Test2\\
    		1 a	AA\\
    		3 c	CC\\
	}

	\subsection{cut}
	\texttt{cut} schneidet Spalten aus. Das Spaltentrennzeichen muss dabei mit dem
	Parameter ''-d'' (Delimiter) angegeben werden (ansonsten wird Tabulator
	angenommen) und die Felder mit ''-f $<$von$>$-$<$bis$>$''. Alternativ k"onnen auch
	mit ''-b $<$von$>$-$<$bis$>$'' absolute Positionen in Zeichen angebenen werden.\\ 

	{\ttfamily	
    		hostname:$\sim$\$ cut -d '' '' -f 2-3 Test2\\
    		a AA\\
    		b BB\\
    		c CC\\
    		hostname:$\sim$\$ cut -b 3-5 Test2\\
    		a A\\
    		b B\\
    		c C\\
	}

	\subsection{paste}
	Das Gegenteil zu \texttt{cut}. F"ugt Dateien Spaltenweise zusammen:\\ 

	{\ttfamily
    		hostname:$\sim$\$ paste Test Test2\\
    		1 a AA  1 a AA\\
    		2 b BB  2 b BB\\
    		1 a AA  3 c CC\\
    		3 c CC\\
	}

	\subsection{tr}
	\textit{Translate}\\
	Mit \texttt{tr} kann man in Textfiles W"orter oder Zeichenfolgen durch andere
	ersetzen. \texttt{tr} ist etwas tricky zu handhaben falls man ganze Wortketten
	durch andere ersetzen m"ochte, kann weder zeichen durch mehrere Zeichen 
	ersetzen noch die Reihenfolge der Buchstaben ver"andern. \texttt{tr} liest von der 
	Standardeingabe, d.h. man muss ihm die Daten per Umleitung oder Pipe 
	"ubergeben.\\ 

	{\ttfamily
		hostname:$\sim$\$ tr a b < Test2\\
		1 b AA\\
    		2 b BB\\
		3 c CC\\
		hostname:$\sim$\$ cat Test2 $\vert$ tr [:alnum:] b\\
        	b b bb\\
		b b bb\\
        	b b bb\\
	}

	\subsection{comm}
	\textit{Compare}\\
	Vergleicht zwei Textfiles, Zeile f"ur Zeile. Die Parameter ''\texttt{-1}'', ''\texttt{-2}'',
	und ''\texttt{-3}'' unterdr"ucken dabei jeweils die Ausgabe der Zeilen die nur im
	ersten File, nur im zweiten File oder nur in Beiden vorkommen.\\ 

	{\ttfamily
	hostname:$\sim$\$ comm Test Test2\\
    	                1 a AA\\
        	        2 b BB\\
			1 a AA\\
	                3 c CC\\
        		hostname:$\sim$\$ comm -3 Test Test2\\
			1 a AA\\
	}

	\subsection{join}
	\texttt{join} erm"oglicht das Zusammenf"ugen von Dateien, wobei defaultm"assig
	der kleinste gemeinsame Nenner gilt.\\ 

	{\ttfamily
		hostname:$\sim$\$ join Test Test2\\
		1 a AA a AA\\
        	2 b BB b BB\\
		3 c CC c CC\\
	}

	\subsection{diff}
	\textit{Differences}\\
	Dies ist der grosse Bruder von \texttt{comm}. \texttt{diff} kann wesentlich mehr, ist 
	aber auch viel komplizierter zu handhaben. 

	\subsection{split}
	Mit split kann man Dateien in Teile zerlegen. Mit dem Parameter ''\texttt{-l}''
	kann man angeben wieviele Zeilen es pro Teil sein sollen, mit dem
	Parameter ''\texttt{-b}'' wieviele Zeichen. Default ist 1000 Zeilen. 

	\subsection{expand/unexpand}
	Expandiert Tabulatoren (8 Zeichen breit) in 8 Leerzeichen und umgekehrt.
	\texttt{unexpand} funktioniert nur pro 8 Leerzeichen. 

	\subsection{fold} 
	Dieses Programm bricht Zeilen um. Damit lassen sich "uberlange Zeilen 
	auf eine auf Konsole oder Printer darstellbare Gr"osse bringen. 

	\subsection{pr}
	Prepariert eine Datei zu Ausgabe auf ASCII-Printern. Erstellt 
	Seitennumerierung etc. 

	\subsection{fmt}
	Formatiert Texte neu, damit sie einfacher gelesen werden k"onnen.


	\section{Kommandos -- Systeminformation}

	\subsection{date}
	Gibt das aktuelle Datum und Zeit aus. 

	\subsection{df}
	\textit{Disk Free}\\
	Zeigt den freien Speicherplatz auf den Disks an. 


	\section{Glossar}

	\subsection{Gleichwertige Begriffe}
		Oftmals werden verschiedene deutsche und englische Begriffe gleichwertig
		verwendet. Es sind dies:
		\begin{itemize}
    			\item Directory Verzeichnis, Folder, Ordner
    			\item File, Datei
    			\item Permissions, Rechte
    			\item Space, Leerschlag
    			\item Programm, Kommando, Befehl, Executable
		        \item Terminal,Konsole
		\end{itemize}


	\subsection{Tasten und Zeichen}
	Die Namen von Zeichen und Tasten variieren im Sprachgebrauch auch sehr, 
	deshalb hier diejenigen die hier verwendet werden:\\  

	\begin{tabular}{ll}
    		$\sim$ 		& Tilde\\
    		/ 		& Slash\\
    		$\backslash$ 	& Backslash\\
   	 	- 		& Dash oder Strich\\
        	\$ 		& Dollar\\
    		\# 		& Octothorp oder Hash\\
    		? 		& Fragezeichen\\
    		$\ast$ 		& Stern\\
    		$\vert$		& Pipe\\
    		$>$ 		& Umleitung Nach oder Gr"osser\\
    		$<$ 		& Umleitung Von oder Kleiner\\
    		@ 		& At\\
    		\&		& Ampersand\\
    		' 		& Tick\\
    		` 		& Backtick\\
    		''		& Anf"uhrungszeichen\\  
		$wedge$		& Caret\\  
    		()		& Klammern\\
    		$[]$		& Eckige Klammern\\
    		\{\} 		& Geschweifte Klammern
    	\end{tabular}

	\subsection{Kommando"ubersicht}
	Eine Kurze Kommando"ubersicht:\\
	\\
    	\begin{tabular}{ll}
    pwd	(print working directory)	& Aktuelles Verzeichnis anzeigen\\
    mkdir (make directory)		& Verzeichnis erstellen\\
    cd (change directory)		& Verzeichnis wechseln\\
    ls (list)				& Dateien auflisten\\
    rmdir (remove directory)		& Verzeichnis l"oschen\\
    touch				& Datei anlegen\\
    cp (copy)				& Datei kopieren\\
    rm (remove)				& Datei l"oschen\\
    mv (move)				& Datei verschieben\\
    man	(manual)			& Manual ansehen\\
    cat	(concatenate)			& Datei anzeigen oder zusammenf"ugen\\
    wc (word count)			& W"orter z"ahlen\\
    more				& Datei seitenweise anzeigen\\
    less				& Datei seitenweise anzeigen\\
    head				& Kopf der Datei Anzeigen\\
    tail				& Fuss der Datei Anzeigen\\
    sort				& Sortieren\\
    uniq				& Duplikate aussortieren\\
    grep				& Finden\\
    cut					& Spalten ausschneiden\\
    paste				& Spalten einf"ugen\\
    tr (translate)			& Einzelne Zeichen ersetzen\\
    comm (compare)			& Dateien vergleichen\\
    join				& Dateien zusammenf"ugen\\
    split				& Dateien zerst"uckeln\\
    diff				& Dateien vergleichen\\
    expand				& Tabulatoren in Spaces umwandeln\\
    unexpand				& Spaces in Tabulatoren umwandeln\\
    fold				& Zeilen umbrechen\\
    pr					& Seitenlayout umwandeln\\
    fmt					& Seitenlayout umwandeln\\
    date				& Datum und Zeit anzeigen\\
    df					& Freien Diskplatz anzeigen\\
	\end{tabular}
} % ende sffamily
\end{document}
