\documentclass[10pt,austrian,twoside]{article}
\usepackage[latin1]{inputenc}
\usepackage{a4}
\pagestyle{plain}
\usepackage{babel}

\newcommand{\3}{\ss}


\begin{document}
\part*{UNIX-Grundlagen}
\section*{Blockiertes Terminal}
\begin{itemize}
\item warten
\item Enter, Line Feed oder Ctrl--J\\
Reset-Befehl: J{\it reset} Ctrl--J\\
aus- und wieder einloggen
\item Ctrl-Z falls Jobcontrol möglich ist\\
$\Rightarrow$ das noch laufende Programm wird suspendiert und man erhält
neue Shell-Eingabeaufforderung. Mit {\bf jobs} die laufenden jobs anzeigen
lassen; mit {\bf fg} das Programm in den Vordergrund zurückholen oder mit
{\bf kill} beenden.
\item Ctrl-C oder Delete
\end{itemize}


\section*{Einloggen von einem anderen System aus}
Bekannte Terminalprogramme sind: {\bf procomm}, {\bf qmodem}, {\bf kermit},
{\bf telnet}, sowie {\bf cu} und {\bf tip} mittels Modem über Telefonleitung.
Starten eines Terminalprogramms unter UNIX
{\it programmname remote\_host\_name};
Ausstieg mit {\it exit};


\section*{X-Window und die Windowmanager}
\begin{description}
\item [Textmode] das Terminal läuft ohne {\bf X};\\
starten von {\bf X} mit:
\begin{description}
\item [xinit]
\item [xdm] ist nur für den root erlaubt;
\end{description}
\item [Graphikmode ohne Fenster] auf dem Terminal läuft {\bf X} aber kein
Window-Manager;\\
einloggen unter {\bf xdm}:\\
\fbox{\begin{minipage}{5cm}{X Window System \\ \\ Login: $\mid$ \\
Password:\\}\end{minipage}}

\item[Graphikmode mit Fenstern] auf dem Terminal läuft {\bf X} und ein
Windowmanager.\\
Windowmanager:
\begin{description}
\item [mwm] Motif Window Manager; starten mit {\it mwm }\&
\item [olwm] Open Look Window Manager; starten mit {\it olwm }\&
\item [twm] Tab Window Manager; starten mit {\it twm }\&
\end{description}
\end{description}
\begin{description}
\item [setzten des Eingabe-Fokus (input focus)] das farblich hervorgehobene
Fenster ist das aktive, es empfängt die Eingaben (von Tastatur und Maus); je
nach Einstellung des Window Managers reicht es den Pointer auf das Fenster zu
bewegen, oder man muß zusätzlich noch klicken;
\item [zusätzliches xterm-Fenster] öffnen mit {\it xterm} oder
{\it xterm} \&;\\
\item [Client] seperates Dienstprogramm in einem eigenen Fenster;
\end{description}

\section*{Shells}
In den Eingabeaufforderungen der Bourne- und der Korn-Shell steht meist ein
\$-Zeichen, in denen der C-Shell meist ein \%-Zeichen.

\subsection*{Text mit Hilfe der Maus editieren}
\begin{description}
\item [Text markieren:] entweder
\begin{itemize}
\item linke Taste drücken und über den zu markierenden Text ziehen;
\item linke Taste am linken Textrand drücken und die rechte Taste am rechten
Textrand;
\end{itemize}
\item [Text an die Stelle des Cursors kopieren] mittlere Maustaste drücken
(bei 2--Tastenmaus beide gleichzeitig);
\end{description}

\subsection*{Befehlssyntax:}
{\bf befehlsname} {\it option(en) datei(en)}\\
\begin{description}
\item [Optionen] oft einzelne Buchstaben, denen ein Minuszeichen vorangestellt
ist; sie sind durch 1 oder mehrere Leerzeichen oder Tabs getrennt;
\item [mehrere Befehle in einer Kommandozeile] durch Semikolons (;) getrennt;
\end{description}

\subsection*{Kontrollzeichen}
\begin{description}
\item [Ctrl--X] Eingabezeile vom Anfang bis zur Cursorposition löschen;
\item[Ctrl--K] Eingabezeile von Cursorposition bis zum Ende löschen;
\item [Ctrl--S] Bildschirmausgabe stoppen;
\item [Ctrl--Q] Neustart der Ausgabe nach Stopp durch Ctrl-S;
\item [Ctrl--D] zurück zur UNIX-Kommandoebene; Beenden bei manchen Programmen;
Ausloggen;
\item [Ctrl--C {\rm oder} Delete] Abbruch eines Programmes (Endlosschleife, ...);
\end{description}

\subsection*{Fehlermeldungen beim Ausloggen}
\begin{description}
\item [There are stopped jobs] Programme wurden angehalten aber nicht beendet
$\Rightarrow$ mit {\bf fg} die angehaltenen Programme wieder in den
Vordergrund holen, dann beenden; ...
\item [not login shell] logout-Versuch auf einer subshell; subshell mit
{\bf exit} beenden, loginshell mit {\bf logout};
\end{description}

\subsection*{nützliche Befehle}
\begin{description}
\item [date] Datums- und Zeitangbe;
\item [who] Angabe wer seit wann wo eingelogged ist;
\item [who am i] Antwort: eigener host! username terminal loggin-time
\end{description}

\section*{Hilfe}
\begin{description}
\item[apropos {\it suchbegriff}] Durchsucht die manualpages nach dem
angegebenen Suchbegriff.
\item[{\it befehl}\hspace{.3em} --\hspace{.1em}--help] Kurzbeschreibung des Befehls und seiner Optionen.
\item[man befehl] Ausführliche Beschreibung des angegebenen Befehls. Die
manualapages sind meist in folgende Abschnitte untergliedert:\\
\begin{description}
\item[NAME] Name des Befehls.
\item[SYNOPSIS] Befehlswort und die möglichen Optionen und Argumente.
\item[DESCRIPTION] Beschreibung des Befehls samt seiner Optionen ähnlich der
Ausgabe auf: {\it befehl --help}, aber ausführlicher.
\item[OPTIONS] Genaue Erläuterungen zu den Optionen.
\item[FILES] Die vom Befehl verwendeten oder zu ihm zugehörigen files.
\item[SEE ALSO] Ähnliche Befehle.
\item[BUGS] Dokumentierte Fehler.
\item[AUTHOR] Name des Autors.
\end{description}
\item[info] Die auf Texinfo files beruhende online-formatierte GNU-Hilfe.
Die einzelnen Menüpunkte sind durch `*' gekennzeichnet.\\
Fortbewegung durch die Menüs:\\
\begin{description}
\item[Auswahl des Menüpunktes] Mit dem Cursor darauffahren und \bf{return}.
\item[Auswahl des nächsten folgenden Menüpunktes (next):] n
\item[Auswahl des vorhergehenden Menüpuktes (previous):] p
\item[Zurückspringen ins übergeordnete Menü (up):] u
\item[Ctrl--h] alle in {\bf info} verfügbaren Befehle werden angezeigt;
\end{description}
\item[zgrep {\em suchwort} 
$\backslash$usr$\backslash$doc$\backslash$HOWTO$\backslash$*] greppen durch
die gezipten HOWTO-files;
\end{description}

\section*{Dateiverwaltung}
\begin{description}
\item [absoluter Pfad] gesamter Pfad vom root-directory beginnend;
beginnt mit einem '/';
\item [relativer Pfad] ab einem (in dem man sich gerade befindet)
Unterverzeichnis beginnend;
\item[df {\it file}] Gibt die Größe des vorhandenen, benutzten und noch
verfügbaren Platzes an. Gibt man ein file an, so werden die Angaben nur fuer
das das file enthaltene filesystem ausgegeben, ansonsten fuer alle
gemounteten filesystems.
\item[du {\it file od. directory}] Gibt die Groesse des angegebenen files
oder directories samt den darin enthaltenen subdirektories und files an.
\end{description}

\subsection*{Wildcards}
\begin{description}
\item [*] für beliebig viele Zeichen;
\item [?] für 1 Zeichen;
\item [{[ ]}] eines der eingeklammerten Zeichen soll an dieser Stelle stehen;
z.B.: [a,b,c] a oder b oder c; [2-5] Zahlenbereich 2, 3, 4, 5;
\item[{[!...]}] ein beliebiges Zeichen, welches \bf{nicht} in der Klammer
angegeben ist, exakt einmal an dieser Position;
\end{description}

\subsection*{Befehle}
\begin{description}
\item [pwd] print working directory;
\item [ls] list files;
\begin{description}
\item [--a] alle, auch die versteckten;
\item [--l] long, mit Typ, Zugriffsrechten, Anzahl der links, Eigentümer,
zugriffsberechtigter Gruppe, Größe, Datum der letzten Änderung und Name;
\item [--F] executierbare files werden mit einem `*' markiert und\\
Verzeichnisse mit einem `/'
\end{description}

\item [mv] move, rename
\begin{description}
\item [mv] {\it alt\-dateiname neu\-dateiname} Umbenennen einer Datei;
\item [mv] {\it dateiname pfad} Verschieben der Datei ins durch den Pfad
angegebene directory;
\end{description}

\item [cp] move, rename
\begin{description}
\item [cp] {\it alt\-dateiname neu\-dateiname} kopieren einer Datei;
\item [cp] {\it dateiname pfad} Kopiert eine Sicherungskopie der Datei ins
durch den Pfad angegebene directory;
\end{description}

\item [rcp] remote copy;
\begin{description}
\item [rcp] {\it host\_name:pfad/dateiname host\_name:pfad/dateiname}
\end{description}

\item [mkdir] Verzeichnis(se) erstellen;
\item [rm] Verzeichnis(se) oder Datei(en) löschen;
\begin{description}
\item [--i] mit interaktiver Frage ob man wirklich löschen will;
\end{description}
\item [rmdir] löscht Verzeichnisse; Verzeichnisse müssen leer sein;

\item [find] Datei-- oder Verzeichnissuche;
\begin{description}
\item [find {[{\it path}]} --name `{\it zusuchender\_name}']
\item [find {[{\it path}]} --mtime --{\it tage}] Dateien die weniger als
{\it tage} Tage alt sind werden gesucht;
die path-Angabe darf nicht vergessen werden; will man nur unter dem aktuellen
Verzeichnis suchen `.', ab dem root-Verzeichnis `/';
\end{description}
\end{description}

\subsection*{Dateizugriffsrechte}
Durch die Einstellung von {\bf umask} mittels einer 3--stelligen Oktalzahl in
einem hidden file (oft .login oder .cshrc) sind die Standardzugriffsrechte der
von einem selbst erzeugten Dateien eingestellt. Will man Dateien einer Gruppe
oder der Öffentlichkeit zur Verfügung stellen, so muß man die entsprechenden
Zugriffsrechte an diesen Dateien setzen, aber auch für alle übergeordneten
directories die entsprechenden execute--Rechte freigeben.
\begin{description}
\item [chmod {\it 3-stellige\_oktalzahl dateiname}] in der 3-stelligen
Oktalzahl sind die jeweiligen Rechte: {\bf read},{\bf write} und {\bf execute}
für {\bf user}, {\bf group} und {\bf public} codiert (1-aus-n-Code bei binärer
Darstellung.
\end{description}

\section*{E--/A--Umleitung}
\begin{description}
\item [{\it befehl} \flq {\it datei}] Der Befehl verwendet die Datei als
Eingabe; meist ist die Tastatur die Standardeingabeeinheit;
\item [{\it datei} \frq {\it befehl}] Der Befehl verwendet die Datei als
Ausgabeeinheit; meist ist der Bildschirm die Standardausgabeeinheit;
um zu vermeiden, daß eine Datei dadurch überschrieben wird kann man in der
Datei {\it .profile} den befehl {\bf set noclobber} für die C-Shell setzen,
für die Korn-Shell lautet der Befehl: {\bf set --o noclobber}
\item [{\it datei} \frq \frq {\it befehl}] Der Befehl hängt die Ausgabe an
die Datei an;
\end{description}

\section*{Pipelines und Filter}
\begin{description}
\item [{\it befehl} $\mid$ {\it befehl}] Pipline; der 1. Befehl gibt seine
Ausgabe an den 2. Befehl als dessen Eingabe weiter; der 2. Befehl wird als
Filter bezeichnet;
\end{description}

\subsection*{Befehle die oft als Filter verwendet werden}
Diese Befehle sind natürlich auch als selbständige Programme nützlich.
\begin{description}
\item [grep {\it ``muster'' datei}] (Globally search for a Regular Expression
and Print all lines containing it) Läßt man die Dateiangabe weg, so wird die
Standardeingabe (Tastatur) bearbeitet;
\begin{description}
\item [--f] fixed string; der string kann auch Shell-Sonderzeichen enthalten;
\item [--v] gibt die Zeilen aus in denen das Muster nicht enthalten ist;
\item [--n] gibt die das Muster enthaltenen Zeilen mit vorangestellter
Zeilennummer aus;
\item [--l] gibt die Namen der das Muster enthaltenen Dateien aus;
\item [--c] gibt die Anzahl der das Muster enthaltenen Zeilen aus;
\item [--i] unterscheidet bei der Suche nicht zwischen Groß-- und
Kleinbuchstaben;
\end{description}

\item [sort] sortiert, falls nicht anders angegeben alphabetisch;
\begin{description}
\item [--n] sortiert numerisch;
\item [--r] kehrt die Reihenfolge um;
\item [--f] sortiert gemischt Groß- und Kleinschreibung;
\item [+{\it x}] ignoriert beim Sortieren die ersten {\it x} Felder;
\end{description}

\item [pr] Dateiformatierung für Probeausdrucke
\begin{description}
\item [--{\it x}] {\it x}--spaltigeAusgabe der Datei;
\item [--h ``title''] schreibt den title in die Titelzeile;
\item [--t] unterdrückt header, oberen- und unteren Seitenrand;
\item [--e] wandelt Tabs in Leerzeichen um;
\end{description}
\end{description}

\section*{Druckbefehle}
\begin{description}
\item [groff] startet troff und einen zum Drucker passenden Postprozessor;
\item [troff] wird normalerweie von troff gestartet;
\item [nroff] Datei für den Druck formatieren;
\end{description}

\subsection*{System-V Druckerkonzept:}
\begin{description}
\item [lp] Druckbefehl für System-V Unixsysteme (Solaris, HP-UX).
\begin{description}
\item [--d{\it printer}] Drucken auf dem Drucker {\it printer};
\item [--n{\it x}] die Datei {\it x}-mal ausdrucken;
\item [--m] mail-Antwort wenn der Ausdruck beendet ist;
\item [cancel] Abbruch des Druckjobs mit Hilfe des Druckernamens oder der
Prozeß-ID;
\end{description}
\item [lpstat] Ansehen der Druckerwarteschlange;
\end{description}

\subsection*{BSD-Druckerkonzept}
\begin{description}
\item [lpr] Druckbefehl für BSD-Unixsysteme wie z.B.: Linux
\begin{description}
\item [--P{\it printer}] Drucken auf dem Drucker {\it printer};
\item [--{\it x}] die Datei {\it x}-mal ausdrucken;
\item [--m] mail-Antwort wenn der Ausdruck beendet ist;
\end{description}
\item [lprm] Abbruck des Druckjobs mit Hilfe des Druckernamens oder der
Prozeß-ID;
\item [lpq] Ansehen der Druckerwarteschlange;
\begin{description}
\item [--o] zeigt alle, nicht nur die eigenen Druckjobs an;
\end{description}
\item [lprm Job\_Nr] Abbrechen eines Printer-Jobs; 
\end{description}

\section*{Multitasking}
\begin{description}
\item [{\it befehl} \&] einen Befehl im Hintergrund laufen lassen; die Shell
weist dem Prozeß eine Prozeß-ID (Identifikationsnummer) zu und zeigt diese
auch gleich an;
\item [{\it befehl\_1}; {\it befehl\_2} \&] mehrere Befehle in der C-Shell im
Hintergrund laufen lassen;
\item [({\it befehl\_1}; {\it befehl\_2}) \&] mehrere Befehle in der Bourne-
oder Korn-Shell im Hintergrund laufen lassen;

\item [bg] einen Prozeß in den background befördern;
\item [fg] einen Prozeß in den foreground befördern;

\item [ps] processes; gibt die laufenden Prozesse mit Prozeß-ID, Terminal von
dem aus gestartet wurde, Laufzeit und Namen aus;
\item [kill {\it PID(s)}] Prozess(e) abbrechen;
\item [kill--9 {\it PID(s)}] Prozess(e) abbrechen, auch die die sich mit kill
alleine nicht abbrechen lassen; der Befehl beendet sogar die eigene (ihn
aufrufende) Shell;

\item [sleep {\it n}] läßt den Befehl {\it n}-sec schlafen;
\end{description}

\section*{Der Editor vi}
Der Editor vi (sprich: ``wie--ei'') ist der älteste und verbeitetste unter
UNIX. Nach dem Aufruf mit {\bf vi \it{dateiname}} befindet er sich im
{\bf Command Mode}. Um Text schreiben zu können muß man mittels eines
Befehls in den {\bf Edit Mode} wechseln. Zurüch in den Command Mode kommt man
mit {\bf Esc}. Die {\bf ex}--Befehle werden vom Command Mode aus mit
vorangestelltem `:' aufgerufen. Man kann auch die ex--Befehle zu einem Befehls--
Mode zusammenfassen, in den man vom Command Mode aus mit `:' gelangt.

\subsection*{Command Mode--Commands}
\subsubsection*{Cursor Movements}
\begin{description}
\item [h] Cursor nach links;
\item [j] Cursor nach unten;
\item [k] Cursor nach oben;
\item [l] Cursor nach rechts;
\item [0] an den Zeilenanfang;
\item [\$] an das Zeilenende;

\item [Ctrl--D] halbe Seite vorwärts;
\item [Ctrl--U] halbe Seite rückwärts;
\item [Ctrl--F] eine Seite vorwärts;
\item [Ctrl--B] eine Seite rückwärts;

\item [1G] zum Dateianfang (Zeile 1);
\item [{\it x}G] zur Zeile {\it x};

\item [b] Cursor zum Beginn des aktuellen Wortes; Wort ist Folge von
Buchstaben, Ziffern und underline;
\item [w] Cursor zum Beginn des nächsten Wortes; Wort ist Folge von
Buchstaben, Ziffern und underline;
\item [e] Cursor zum Ende des aktuellen Wortes;
\item [f{\it c}] zum nächsten Zeichen {\it c};
\end{description}

\subsection*{Suchbefehle}
\begin{description}
\item [\%] springt zur korespondierenden Klammer; es wird zwischen den
verschiedenen Klammerformen unterschieden;
\item [/{\it muster}] suche vorwärts nach dem angegebenen {\it muster};
\item [?{\it muster}] suche rückwärts nach dem angegebenen {\it muster};
\item [n] Wiederholung der letzten Suche;
\item [N] Wiederholung der letzten Suche in umgekehrter Richtung;
\end{description}

\subsection*{Löschbefehle}
\begin{description}
\item [x] Löschen des Zeichens auf dem sich der Cursor befindet;
\item [D] Löschen bis zum Zeilenende;
\item [dd] aktuelle Zeile löschen;
\end{description}

\subsection*{undo}
\begin{description}
\item [u] letzten Befehl rückgängig machen (mehrmals möglich);
\end{description}

\section*{Wechsel vom Command-- in den Edit Mode}
\begin{description}
\item [a] append nach der aktuellen Cursorposition;
\item [i] insert vor der aktuellen Cursorposition;
\item [o] open new line; Einfügen nach der aktuellen Zeile;
\end{description}

\section*{Wechsel vom Edit Mode in den Command--}
\begin{description}
\item [Esc]
\end{description}

\section*{ex--Befehle}
\begin{description}
\item [:w] write file; file speichern;
\item [:wq] write and quit; file speichern und vi beenden;
\item [:q!] vi beenden ohne file zu speichern;
\item [:r {\it dateiname}] nach der aktuellen Zeile die Datei einfügen;
\item [:n ] editieren der nächsten Datei (falls beim Aufruf von
vi mehrere Dateinamen angegeben wurden);
\item [:e {\it dateiname}] verlassen der alten Datei und editieren der
angegebenen;
\end{description}

\section*{Nützliche Befehle}
\begin{description}
\item [cat] (concatenate) hängt die angegebenen Dateien zusammen; für kurze Dateien
ist es als schneller viewer geeignet;
\item [more {\it datei(en)}] ist auch als Filter praktisch zur Ausgabe von
Dateien, {\bf less} ist aber praktischer;
\item [pg {\it datei(en)}] ähnlich wie more;
\item [less {\it datei(en)}] Ausgabe von Dateien, oder als Filter;\\
Bewegen in der Datei:
\begin{description}
\item [Cursor down {\rm oder} e] eine Zeile weiter;
\item [Cursor up {\rm oder} y] eine Zeile zurück;
\item [d] halbe Seite vorwärts;
\item [u] halbe Seite rückwärts;
\item [f] 1 Seite vorwärts;
\item [b] 1 Seite rückwärts;
\item [/{\it pattern}] suchen des Suchwortes nach vorne;
\item [?{\it pattern}] suche des Suchwortes nach hinten;
\item [n] weitere Suche des Suchwortes in der gleichen Richtung;
\item [N] weitere Suche des Suchwortes in umgekehrter Richtung;
\item [:n] zum nächsten file das in der Kommandozeile angegeben wurde;
\item [:p] (previus) zum davor angegebenen file;
\item [q] (quit) beenden;
\end{description}
\end{description}

\section*{Emails}
Emails können mit komfortablen mail-Programmen wie z.B.: {\bf pine} und
{\bf elm} empfangen und gesendet werden, allerdings ist auf jedem Unix-System
das primitive mail-Programm namens {\bf mail} verfügbar.
\begin{description}
\item [mail] nachsehen ob man mail(s) bekommen hat und lesen; die einzelenen
Nachrichten sind durch \& getrennt; zur nächsten email mit {\bf return}
\item [x] beenden des email-Lesens, die emails bleiben in der inbox enthalten;
\item [q] beenden des email-Lesens; die gelesen emails werden in der Datei
{\it mbox} gespeichert;
\item [mail {\it emailadresse} return] eine email schicken; in der nächsten
Zeile wird nach dem subject gefragt; danach den Text des emails eingeben;
Abschließen des emails mit {\bf . return}; danach können noch carboncopies
angegeben werden;
\end{description}

\section*{ftp}
\begin{description}
\item [ftp] Aufruf des Programms; grundsätzlich alle Befehlsworte mit return
abschließen, dann wird man automatisch weitergefragt;
\item [ftp {\it host}] Aufruf des Programmes und Aufbau der Verbindung;
\item [?] Ausgabe der Befehlsliste;
\item [get] remote-file holen;
\item [put] local-file schicken;
\item [close] Verbindung zu remote-host abbrechen;
\item [quit] Programm beenden;
\end{description}

\typeout{}
\typeout{copyright by Thomas Poetsch, 9.; Marktg. 8-10/22}
\typeout{}

\end{document}
