# Hilfe

## Die Manual Pages

Unixe verfügen von Haus aus über ein ausgereiftes Hilfesystem, die Manual Pages. Zu nahezu jedem Kommando findet man dort eine ausführliche Beschreibung und jeder Programmierer ist dazu aufgefordert, zu seinen Programmen ebenfalls Manuals zu erstellen.

    user@sonne> man ls
    LS(1)                          FSF                          LS(1)

    NAME
           ls - list directory contents

    SYNOPSIS
           ls [OPTION]... [FILE]...

    DESCRIPTION
           List information about the FILEs (the current directory by
           default).  Sort entries alphabetically if none of -cftuSUX
           nor --sort.

           -a, --all
                  do not hide entries starting with .

           -A, --almost-all
                  do not list implied . and ..

           -b, --escape
                  print octal escapes for nongraphic characters

           --block-size=SIZE
                  use SIZE-byte blocks
    ...

zeigt eine kompakte Beschreibung des Kommandos `ls` mit all seinen Optionen, Argumenten, Informationen zu bekannten Problemen, Verweise zu verwandten Kommandos...

Selbstverständlich gibt es zur Bedienung von `man` selbst ein Manual.

Das Manual eines jeden Kommandos ist einer so genannten Sektion zugeordnet, die Auskunft über den ungefähren Verwendungszweck des Programmes geben soll:

Nummer | Beschreibung der Sektion
1 | Programme und Shellkommandos
2 | Systemrufe
3 | Bibliotheksfunktionen
4 | Spezialdateien (Gerätedateien)
5 | Dateiformate und -vereinbarungen
6 | Spiele
7 | Makropakete (z.B. Formatierer `groff`)
8 | Kommandos für Root
9 | Kernelroutinen

Die Manuals selbst folgen einem festgelegten Format:

Bezeichnung | Beschreibung
NAME | Kommandoname (bzw. Dateiname...) und Kurzbeschreibung
SYNOPSIS | Aufrufsyntax
DESCRIPTION | Detaillierte Beschreibung der Wirkungsweise aller möglichen Optionen
FILES | Vom Kommando benötigte/modifizierte Dateien
SEE ALSO | Hinweise auf verwandte Kommandos
DIAGNOSTICS | Erläuterungen zu Fehlercodes, die das Kommando zurück liefert
BUGS | Bekannte Fehlverhalten des Kommandos, aber auch Hinweise auf Wirkungen, die gewollt aber ungewöhnlich sind
EXAMPLE | Beispiele zur Verwendung des Kommandos (fehlt leider oft)

So wie ein Fahrzeug ein Fahrrad, ein Mofa, ... oder auch einen 40 Tonnen schweren Brummi beschreiben kann - und man den wahren Sinn oftmals erst aus dem Zusammenhang erfährt -, so werden viele Begriffe auch unter Unix synonym benannt. So lässt ein Nutzer einem anderen eventuell mittels `write` eine Nachricht zukommen. Und das Betriebssystem verwendet `write`, um etwas in ein Datei zu schreiben... Wo finde ich nun die Beschreibung meines `write`?

Wenn ich weiß, dass die Betriebssystemfunktionen in der Sektion 2 enthalten sind, und ich eben diese Beschreibung von `write` benötige, so gebe ich die gewünschte Sektion gleich an:

`user@sonne> man -S 2 write`

...doch oft ist man sich seiner Sache nicht so sicher - dann hilft einem das Kommando `apropos` auf die Sprünge:

`user@sonne> apropos write wall (1) - write a message to users write (1) - send a message to another user write (2) - write to a file descriptor writelog (8) - add a entry to an INN log file. ...`

Das Kommando durchsucht die Description-Zeilen aller Manuals und schreibt die übereinstimmenden Zeilen auf die Standardausgabe. Analog arbeitet `man -k write`.

Die meisten heutigen Linux-Distributionen beinhalten auch noch das Kommando `whatis`, dass ähnliche Informationen wie `apropos` liefert, aber mittels einer kleinen Datenbank (oft `/usr/man/whatis` - eine sortierte Textdatei) arbeitet. `whatis` ist somit sehr schnell, bedarf aber einer ständigen Aktualisierung der Datenbasis.

`user@sonne> whatis write write (1) - send a message to another user write (2) - write to a file descriptor write (1) - send a message to another user write (2) - write to a file descriptor`

Ein Kommandozeileninterpreter besitzt, teils aus Notwendigkeit, teils wegen besserer Performance, einige integrierte Kommandos, zu denen man manchmal vergeblich nach Manuals suchen würde. Speziell für solche builtin-Kommandos exisiert das (builtin-Kommando) `help`:

    user@sonne> help help
    help: help [pattern ...]
        Display helpful information about builtin commands.  If PATTERN is
        specified, gives detailed help on all commands matching PATTERN,
        otherwise a list of the builtins is printed.

## Die Info-Seiten

Andere Informationsquellen sind die Info-Seiten, die man durch Eingabe von

`user@sonne> info`

erreicht. Zuerst sollte man sich die Hilfe zu `info` betrachten, da die Bedienung doch eher seltsam ist. Hilfreicher sind da die grafischen Fontends `xinfo` bzw. `tkinfo`.

Die Info-Seiten selbst sind als Nachfolger der Manual Pages vorgesehen, in einigen Manuals findet man daher den Verweis auf ihre Info-Versionen. Trotz seiner erweiterten Möglichkeiten - wie einer Hypertext-artigen Verlinkung - hat sich `info` bislang nicht durchsetzen können.

## Die Gebrauchsanleitungen (HowTo)

In den vom Linux Documentation Project gepflegten HOWTO's findet man Informationen zur Installation, Konfiguration, zu von Linux unterstützter Hardware usw. Am besten schaut man sich die HTML-Version der HOWTO's an (unter X). Die komprimierten Quellen finden sich im Verzeichnis `/usr/doc/howto/` und lassen sich z.B. mit dem Pager `less` betrachten.

## Paketeigene Dokumentationen

Viele Programmpakete bringen darüber hinaus eine eigene umfangreiche Dokumentation mit, die vor allem Neuerungen, Installationshinweise und Fehlerbehandlungen umfasst. Die entsprechenden Dateien finden sich meist in den jeweiligen Unterverzeichnissen in `/usr/doc/packages`.

## Hilfe aus dem Web

Falls dennoch Probleme auftauchen, denen man mit obigen Mitteln nicht gewachsen ist, kann man sein Glück in einer der zahlreichen Newsgruppen zu Linux suchen. Die Reaktionszeiten in manchen Foren würde vielen professionellen Supporten zu Ruhm und Ehre gereichen...