% (buffer-name)  "UnixKurs.tex"
% Time-stamp: <1999-06-08 18:10:45 das>
\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage{palatino,german,a4,textcomp}
\parskip1ex
\parindent0cm
\begin{document}

\section*{Kurze Unix-Einf"uhrung 
  \hfill {\footnotesize Version vom 8. Juni 1999} } 

\begin{footnotesize}
  \textcopyright{} 1998, 1999 Daniel Schlieper
  \texttt{<daniel.schlieper@uni-koeln.de>}. Vervielf"altigung nur als
  unver"anderter Text mit diesem Abschnitt. Ohne Garantie auf Richtig-
  und Brauchbarkeit des Textes.
\end{footnotesize}

Keine Angst vor Unix! Hier ist das Wichtigste, um sofort loslegen zu
k"onnen:

\subsection*{Dateiverwaltung}

Eine \textbf{Datei} ist die kleinste Einheit in einem Computer,
vergleichbar etwa mit einem Kapitel in einem Buch. Jede Datei hat
einen eigenen Namen. Beispiel: \texttt{denzo.log}.

Bei Unix wird die Gro"s- und Kleinschreibung beachtet. Die Datei
\texttt{denzo.log} ist also eine andere als \texttt{Denzo.log}.

Es gibt verschiedene Arten von Dateien: \textbf{normale Dateien},
\textbf{Programme} und \textbf{Verzeichnisse}.

In den \textbf{normalen Dateien} wird Information gespeichert: meist
Texte oder Bilder.

Die \textbf{Programme} sind Dateien, die den Computer dazu bringen,
etwas zu tun. Dazu mu"s der Name des Programms und die "`Enter"'-Taste
eingetippt werden. Um zu zeigen, da"s der Computer aufnahmebereit ist
und auf eine Eingabe wartet, blendet er einen sogenannten Promt ein.
Das ist oft ein \texttt{\$} oder ein \texttt{\%}. Manchmal wird auch
zus"atzliche Information angegeben, so z.~B. der Name des jeweiligen
Rechners.

Ein Beispiel f"ur ein Programm: Um das aktuelle Datum zu erfahren,
kann der Befehl \texttt{date} benutzt werden:
\begin{quote}
  \texttt{\% \textbf{date}} (Enter-Taste)\\ 
  \texttt{Fri Jun 4 16:17:42  MET DST 1999}\\
  \texttt{\%}
\end{quote}

In den \textbf{Verzeichnissen} sind andere Dateien, so wie in
B"ucherregalen B"ucher stehen und in B"uchern Kapitel zu finden sind.
Und genau wie in einer Bibliothek die Bücher (und darin die Kapitel)
sind in Verzeichnissen die Dateien hierarchisch geordnet. Als Beispiel
könnte die Fundstelle eines bestimmten Kapitels so beschrieben
werden:\\[1ex]
\texttt{/Ausleihe/Viertes\_Regal\_links/%
Erstes\_Buch/Zweites\_Kapitel}

Genauso wird die Fundstelle einer Datei angegeben:\\[1ex]
\texttt{/diska2/xprakt/Lysozym/images/1.img} gibt an, wo sich die
Bild-Datei namens \texttt{1.img} befindet. Diese Fundstellenangabe
wird "`der \textbf{Pfad} der Datei"' genannt. Bei Unix wird der
normale Schr"agstrich (\texttt{/}) verwendet, um die einzelnen
Verzeichnisnamen voneinander zu trennen.

So wie die Leser durch eine Biblothek gehen, um sich Bücher zusammen
zu suchen, können die User sich durch das Dateisystem (die Gesamtheit
aller Pfade) bewegen: Mit \texttt{\textbf{cd Verzeichnisname}}
(change directory) können sie in ein Unterverzeichnis gehen, und mit
\texttt{\textbf{cd ..}} kommen sie wieder zur"uck.

Das Verzeichnis, in dem sie gerade arbeiten, wird ihr
\textbf{Arbeitsverzeichnis} genannt. Der Pfad des aktuellen
Verzeichnisses l"a"st sich mit \texttt{\textbf{pwd}} (print
working directory) anzeigen.

Viele Befehle wirken nur auf Dateien, die in diesem Arbeitsverzeichnis
sind. So l"a"st sich eine "Ubersicht "uber alle Dateien und
Unterverzeichnisse in dem jeweiligen Arbeitsverzeichnis mit dem Befehl
\texttt{\textbf{ls}} (list) erhalten.

Diesem Befehl kann aber noch noch zus"atzlich angegeben werden, da"s
ein anderes Verzeichnis gemeint ist: 
\begin{quote}
  \texttt{\% \textbf{ls /diska2/xprakt/} }
\end{quote}
Diese Zusatzangaben werden \textbf{Argumente} genannt.


\begin{sloppypar} 
Ganz praktisch sind die Abk"urzungen f"ur h"aufig verwendete
Pfadnamen: "`\texttt{\textbf{.}}"' f"ur das Arbeitsverzeichnis,
"`\texttt{\textbf{..}}"' f"ur das "ubergeordnete Verzeichnis, und
"`\texttt{\textbf{/}}"' f"ur das alleroberste Verzeichnis. Achtung!
Deshalb ist die Eingabe  "`\texttt{diska2/xprakt}"' unterschiedlich
von "`\texttt{\textbf{/}diska2/xprakt}"'.
\end{sloppypar}

Weitere Programme/Befehle, die sehr n"utzlich sind:

Kopieren einer Datei: \texttt{\textbf{cp alte\_{}Datei neue\_{}Datei}}
(copy). Evtl. mit Pfadangaben: \texttt{\textbf{cp alte\_{}Datei
    /Pfad/neue\_{}Datei}}.

L"oschen einer Datei: \texttt{\textbf{rm Dateiname}} (remove)
--- Vorsicht: die Datei wird unwiderruf"|lich und meist ohne Nachfrage
gel"oscht!

Ein Verzeichnis l"oschen: \texttt{\textbf{rmdir Verzeichnisname}}

Ein neues Verzeichnis wird mit \texttt{\textbf{mkdir Verzeichnisname}}
(make directory) erstellt.

Eine Textdatei kann mit \texttt{more} angezeigt werden.
\texttt{\textbf{more Dateiname}}. Mit der Leertaste kann
weitergebl"attert werden und mit \texttt{\textbf{q}} (quit) wird das
Programm verlassen.  Komfortabler ist jedoch der Einsatz eines Editors
(siehe unten).

Eine Datei drucken: Je nach Computer \texttt{\textbf{lp Dateiname}}
oder \texttt{\textbf{lpr Dateiname}} Mit dem Zusatz
\texttt{{-PDruckername}} kann ein bestimmter Drucker angegeben werden:
\texttt{\textbf{lp(r) -PDruckername Dateiname}}. Solche Zus"atze, die
mit einem Minuszeichen beginnen, werden "ubrigens \textbf{Optionen}
genannt.
 
Hilfe zu einem Programm: \texttt{\textbf{man Programm}} (manual).
Dabei wird die Programmbeschreibung mit \texttt{more} (oder einem sehr
"ahnlichen Programm) ge"offnet.

Es gibt viele B"ucher mit einer ausf"uhrlichen Einf"uhrung in Unix, so
z.~B. "`Unix --- ein praktischer Einstieg"' von Grace Todino, John
Strang und Jerry Peek, O'Reilly Verlag, K"oln, 1.~\mbox{Auf"|l.}~1996.

\begin{sloppypar}
Sehr empfehlenswert sind auch die http-WWW-Seiten
\texttt{www.uni-""koeln.de/""RRZK/""Systeme/""Unix/} und
\texttt{tech.ilp.physik.uni-""essen.de/""linux/""LDP/}
(dort besonders: "`The Linux Users' Guide"' von Larry Greenfield),
sowie der "`Crash-Kurs Linux"' von Winfried Tr"umper
(\texttt{www.guug.de/""\~{}winni/""linux/})
\end{sloppypar}

Ein Allround-Talent der Dateiverwaltung ist der Midnight Commander. Er
wird mit dem Kommando \texttt{\textbf{mc}} gestartet. F"ur
Gelegenheitst"ater unbedingt zu empfehlen! Leider ist er auf vielen
Unix-Rechnern nicht installiert. Wer das Progamm hat, sollte
\texttt{\textbf{mc}} aufrufen und mit der \texttt{F1}-Taste die Hilfe
starten.

\subsection*{Editoren}
Editoren sind Programme, mit denen Texte geschrieben und ver"andert
werden. Es gibt auf jedem Unix-Rechner \texttt{\textbf{vi}}, und auf
fast jedem \texttt{\textbf{emacs}}. Dazu existieren noch eine ganze
Reihe sehr einfacher Editoren, z.~B. \texttt{\textbf{ae}},
\texttt{\textbf{ee}}, \texttt{\textbf{joe}}, \texttt{\textbf{jot}} und
\texttt{\textbf{pico}}. Sie sind selbsterkl"arend, aber nicht auf
allen Unix-Rechnern installiert. Es ist Geschmackssache, welches
Programm bevorzugt wird.  Allerdings sollten alle \texttt{vi} und
\texttt{emacs} kennen.

\paragraph{vi:} Der \texttt{vi} hat zwei verschiedene Zust"ande: In
dem einen kann geschrieben werden, und jede Eingabe wird Text
(Eingabemodus). In dem anderen werden Kommandos ausgef"uhrt, z.~B.
Buchstaben gel"oscht, der Text abgespeichert oder das Programm
verlassen. Schritt f"ur Schritt sieht das so aus:
\begin{enumerate}
\item \texttt{\textbf{vi Dateiname}}
\item Der \texttt{vi} ist zuerst im Kommandomodus. Durch das Dr"ucken
  der Tasten \texttt{i} oder \texttt{a} wird in den Eingabemodus
  gewechselt (insert bzw. append).
\item Tippen. An vielen Unix-Rechnern funktionieren die Cursortasten
  auch im Eingabemodus.
\item F"ur alle anderen Kommandos wird durch Dr"ucken der
  \texttt{ESC}-Taste in den Kommandomodus gewechselt. Hier ist es
  m"oglich, Zeichen zu l"oschen (\texttt{x}), sich im Text zu bewegen
  (\texttt{h}=links, \texttt{j}=runter, \texttt{k}=rauf,
  \texttt{l}=rechts), abzuspeichern (\texttt{:w Dateiname}) und das
  Programm zubeenden (\texttt{:q}).
\item Die Tastenfolge \texttt{ESC:q!} beendet den \texttt{vi}
   \textbf{ohne} Abspeichern.
\end{enumerate}   
Das Buch zum \texttt{vi}: "`Learning the vi Editor"' von Linda Lamb,
O'Reilly \& Associates, Sebastopol, CA, USA, 5.~Auf"|l. 1990.

\paragraph{emacs:} 
\begin{enumerate}
\item \texttt{\textbf{emacs Dateiname}}
\item Tippen. Wenn die Cursortasten und \texttt{Backspace/Delete}
  nicht ordentlich funktionieren, k"onnen auch die Tasten
  \texttt{Control-b}, \texttt{Control-f}, \texttt{Control-n} und
  \texttt{Control-p} zum Bewegen im Text verwendet werden und 
  \texttt{Control-d} zum L"oschen (Die Tasten sind leicht zu merken:
  Sie stehen f"ur backwards, forwards, next line, previous
  line und delete).
  \item Ein Kommando (z.~B. \texttt{Control-h} f"ur Hilfe) kann mit
    \texttt{Control-g} abgebrochen werden.
  \item R"uckg"angig machen: \texttt{Control-/}. Mehrere dieser
    R"uckg"angig-Befehle hintereinander machen entsprechend viele der
    letzten Eingaben r"uckg"angig. 
\item Den Text wird  mit \texttt{Control-x Control-s} abgespeichert.
\item Beenden mit \texttt{Control-x Control-c}. 
\end{enumerate}
\begin{sloppypar}
Wer mehr wissen will, sollte \texttt{\textbf{emacs}} aufrufen und dann
das Tutorial mit \texttt{Control-h~t} starten. Au"serdem gibt es
nat"urlich ein Buch: "`Learning GNU Emacs"' von Debra Cameron, Bill
Rosenblatt und Eric Raymond, O'Reilly \& Associates, Sebastopol, CA,
USA, 2.~Auf"|l. 1996.
\end{sloppypar}

\subsection*{Fehlermeldungen}
Die meisten Unix-Programme bel"astigen die User nicht mit un"otigen
Meldungen.  Wenn das aufgerufene Programm das erreicht hat, was es
sollte, bekommen die User eine erneute Eingabeaufforderung und der
Computer wartet auf den n"achsten Befehl.  Ein Beispiel zum
Ausprobieren: \texttt{\textbf{cd /usr}}.  \texttt{/usr} wird neues
Arbeitsverzeichnis, und der Promt erscheint wieder. R"uckmeldungen
kommen aber dann, wenn \textbf{Fehler} gemacht wurden. Diese
Fehlermeldungen sind meist recht informativ, so da"s sofort klar ist,
was falsch gelaufen ist. H"aufige Anf"angerfehler sind neben
"`normalen"' Tippfehlern vergessene Leerzeichen oder Schr"agstriche.
Hilfreich ist es, sich anzusehen, wie die entsprechen Fehlermeldungen
lauten. Zum Abtippen: \texttt{\textbf{dare}} (statt \texttt{date}),
\texttt{\textbf{cd/usr}} und \texttt{\textbf{/usr}} (statt
\texttt{cd~/usr}) und \texttt{\textbf{/etc/passwd}} 
(statt \texttt{ls~/etc/passwd}).

\subsection*{Proze"skontrolle}
Unter Unix k"onnen mehrere Prozesse gleichzeitig laufen. Dazu wird ein
"`\texttt{\&}"' hinter den jeweiligen Befehl getippt, und dieses
Programm arbeit im Hintergrund. Der Computer gibt dabei zwei Zahlen
an: eine laufende Nummer in eckigen Klammern, die Jobnummer, und eine
ohne Klammern, die PID (process identification). Ein Job im
Hintergrund wird mit \texttt{\textbf{fg Jobnummer}} wieder an die
Oberfl"ache geholt.  Hier werden Jobs mit \texttt{Control-z} gestoppt,
und \texttt{\textbf{bg Jobnummer}} bringt sie wieder zur"uck in den
Hintergrund.

Das Programm \texttt{\textbf{jobs}} gibt die Jobnummern aus, und
\texttt{\textbf{ps}} zeigt eine Liste aller laufenden Prozesse mit
ihren PIDs.  Soll ein Proze"s vorzeitig beendet werden? Einfach
eintippen: \texttt{\textbf{kill -TERM}} und die entsprechenden PID.
Nur ganz hartn"ackige Prozesse werden mit \texttt{\textbf{kill -KILL
    PID}} beendet.

%~\vspace{1ex}\\
%\begin{footnotesize}
%  \textbf{Dank} an Elisabeth Stratmann, Martin Behland, 
%  Olav Zimmermann, Oliver Leven 
%  und  Winfried Tr"umper f"ur sehr hilfreiche Kommentare.
%\end{footnotesize}


\end{document}










