Dieser Beitrag stammt von http://www.linux-magazin.de


Zu Befehl

Viel zu lesen

von Heike Jurzik
 [ Titelbild ]


Auch wenn viele Dinge sich bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen -- wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Und auch sonst gibt es viele Situationen, wo es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Da sitzt man nun vor dem Computer, so richtig fit fühlt man sich nach der Installationsorgie auch nicht mehr, und zu allem Überfluss sieht man nach dem ersten Einloggen nur einen blinkenden Cursor. Bin ich schon drin in diesem ominösen Linux? Eigentlich könnte es jetzt losgehen mit der Entdeckung des neuen Systems. Aber wie? Woher bekommt man denn Hilfe, wenn gerade kein schlaues Buch zur Hand ist?

Aller Anfang ist man

Auch Linux besitzt eine Online-Hilfe, die sogenannten Man-Pages (abgeleitet vom englischen oder lateinischen "manual"). Hier kann man viele Dinge nachschlagen, sich Parameter für die meisten Befehle heraussuchen oder Hinweise auf andere Kommandos finden. Tippt man einfach man am Prompt, erhält man folgenden Hinweis:

huhn@huehnerstall ~ > man
What manual page do you want?


Parameter: Viele Kommandos -- darunter fast alle Kommandozeilenprogramme -- erwarten, dass man ihnen im Anschluss an den Befehlsnamen noch weitere Informationen mitgibt, z.B. den/die Dateinamen der zu bearbeitenden Datei(en) und/oder sogenannte Flags, die Änderungen im Verhalten des Befehls bewirken. All diese Dinge nennt man Parameter.
Prompt: Das Bereitzeichen der Kommandozeile: Ein $ oder >, ggf. mit einigen zusätzlichen Informationen wie Rechner-, Benutzer- und/oder Verzeichnisname versehen, signalisiert, dass man jetzt Befehle eingeben kann. Der #-Prompt ist der Konvention nach dem Superuser root vorbehalten, aber wie fast alles kann man auch den Prompt unter Linux dem eigenen Geschmack anpassen.

Offensichtlich gibt es da mehrere. Der nächste Versuch lautet man man. Das erste man ruft hierbei das eigentliche Programm auf, das zweite man ist der zugehörige Parameter und gibt den Befehl an, über den man sich informieren möchte. Nach einer kurzen Zeit, die das System benötigt, um die entsprechende(n) Seite(n) zu formatieren, sieht man die erste Seite des Referenz-Handbuchs.


Formatieren: Heißt in diesem Zusammenhang, dass der Text für die Ausgabe am Monitor vorbereitet wird.

Abschnitt für Abschnitt

Hier gibt es Einiges zu erforschen -- und dabei hat man die Möglichkeit zu blättern. Mit der Leer-Taste geht es eine Seite nach unten, mit b (wie "back") wieder hoch. Zum Verlassen gibt man q für "quit" ein.

Das erste Betrachten so einer Seite kann ziemlich abschreckend wirken -- wie soll man in dieser Buchstabenwüste etwas finden? Bringen wir ein bisschen Licht ins Dunkel: Jede Man-Page besteht aus mehreren Abschnitten. Unter NAME findet man eine Kurzbeschreibung des Befehls, SYNOPSIS zeigt das Kommando mit den möglichen Argumenten an, und DESCRIPTION beschreibt, wie der Befehl funktioniert.

Nach dieser recht kurzen Vorstellung geht die Man-Page ans Eingemachte. Nicht alle Informationen, die hier aufgelistet sind, braucht man immer und zu jeder Zeit. Außerdem sind diese Seiten keine Einführung, sondern eher eine Referenz für Jemanden, der sich schon ein bisschen auskennt. Beispiele kommen in diesen Dokumenten daher eher selten vor. Der Trick besteht darin, sich die wichtigen Punkte herauszupicken und auszuprobieren!

Wenn man sich bis zum Ende der Man-Page durchgekämpft hat, gelangt man zum Punkt SEE ALSO. Hier gibt es Hinweise auf verwandte Programme und Dateien. So findet man am Ende der Man-Page zu man den Tipp

SEE ALSO
       apropos(1), groff(1), man(1), man2html(1), whatis(1).

Hier stehen weitere Befehle, die man sich im Zusammenhang mit man anschauen kann.

Sauber eingeordnet

Aber was bedeutet die Zahl hinter dem Befehl? Diese Ziffer bezieht sich auf die Section, d.h. auf die Abteilung, der die Man-Page angehört. So gibt es z.B. die Sektion 1, der die Beschreibungen zu Benutzerkommandos zugeordnet werden, 5 enthält Man-Pages, die die Formate wichtiger Dateien erklären, 8 bezieht sich auf Kommandos für den Systemverwalter usw.

Sollten Sie z.B. einmal auf den Hinweis stoßen, dass es von mkdir (für "make directory" -- ein Verzeichnis erstellen) zwei verschiedene Varianten (nämlich mkdir(1) und mkdir(2)) gibt, können Sie beide gezielt mit dem Kommando man 2 mkdir bzw. man 1 mkdir anschauen.

Die Man-Pages selbst werden immer so installiert, dass Hilfeseiten einer Sektion gemeinsam in einem entsprechend nummerierten Unterverzeichnis abgelegt werden (C-Funktionen, wie sie Programmierer benötigen, landen als Mitglieder der Sektion 2 z.B. in man2).

Hilfe! Wo ist Hilfe?

Was aber, wenn man den Befehl, nach dem man sucht, gar nicht kennt? Eine Man-Page zum Thema "Drucken" zu finden, scheitert auf einigen Distributionen im ersten Versuch:

huhn@huehnerstall ~ > man print
No manual entry for print
Wahrscheinlich heißt der passende Befehl demnach gar nicht print... Hier kommt das Kommando apropos ins Spiel. Der Aufruf apropos print listet (wie auch man -k print) alle Kommandos auf, in deren Beschreibung print vorkommt. Dabei wird in einer Datenbank nach Teilen des Worts gesucht. Bei einigen Distributionen ist /usr/bin/apropos ein Shell-Skript, bei anderen ein ausführbares Programm.


Shell-Skript: Eine Datei, die vom Befehlsinterpreter (der "Shell") auszuführende Kommandos enthält.

Ein Blick in das entsprechende Skript verrät, dass die Ausgabe mittels eines PAGERs angezeigt wird:

huhn@huehnerstall ~ > less /usr/bin/apropos 
[...]
if [ "$PAGER" = "" ]
then
    PAGER="/usr/bin/less -is"


Pager: Ein Programm, das die Bildschirmausgabe eines anderen Programms abfängt und seitenweise anzeigt.

Daraus lässt sich erkennen, dass als Pager less -is verwendet wird. less kann sehr praktisch sein, gerade wenn die Ausgabe zum Stichwort etwas umfangreicher ist. Hat das eigene System dieses Feature nicht, und sollten die Zeichen der apropos-Anfrage daher nur so über den Bildschirm fliegen, kann man natürlich die Ausgabe auch direkt in einen Pager seiner Wahl oder eine Datei umleiten:

huhn@huehnerstall ~ > apropos print | less
Durch das Pipe-Zeichen | wird die Ausgabe von apropos print direkt an less weitergeleitet und seitenweise angezeigt. Möchte man sie lieber in eine Datei umlenken, kann man
huhn@huehnerstall ~ > apropos print > ausgabe
verwenden und danach die Datei ausgabe mit einem Pager oder Editor seiner Wahl betrachten.


Pipe: Mit dem Zeichen | wird die Ausgabe des ersten Kommandos zur Eingabe des folgenden gemacht -- es sorgt also für eine Aneinanderkettung von Befehlen.

Geht nicht?

Stellt sich die Frage, wie apropos eigentlich arbeitet, und wie man Abhilfe schafft, wenn es nicht die gewünschten Ergebnisse liefert. Das hängt in erster Linie von der eingesetzten Distribution ab. Liegt in /usr/bin/apropos ein Shell-Skript vor (bei Red Hat z.B.), werden die whatis-Dateien benutzt, die jeweils in einem man-Unterverzeichnis neben man1, man2 etc. zu finden sind. Diese wurden per cron von makewhatis erzeugt und sind ganz normale Textdateien, die z.B. mit grep durchsucht werden können.


cron: Ein Dienstprogramm, das in regelmäßigen, konfigurierbaren Abständen automatisch Kommandos ausführt.
grep: Ein Programm zum Auffinden von Zeichenketten ("Strings").

Das apropos-Binärprogramm anderer Distributionen (z.B. SuSE oder Debian) greift dagegen auf Index-Dateien zurück und versteht auch Wildcards und reguläre Ausdrücke (siehe regex(3)). Das geht wesentlich schneller und ist darüber hinaus natürlich flexibler. Die Index-Dateien liegen entweder wie whatis bei den Man-Pages oder -- dem Filesystem-Standard FSSTND gehorchend -- unter /var/catman o.ä. Erzeugt werden sie mit dem Kommando mandb(8), das ebenso wie makewhatis regelmäßig per cron ausgeführt wird.


Wildcards: "Jokerzeichen", die für ein oder mehrere andere Zeichen stehen können. Beispielsweise ist * ein Stellvertreter für beliebig viele Zeichen, ? hingegen für ein beliebiges.
Reguläre Ausdrücke: Werden verwendet, um Muster in Zeichenketten zu finden. Ein regulärer Ausdruck passt (englisch: "matches"), wenn der String davon korrekt beschrieben wird. Zum Beispiel findet apropos -r "^play" bei SuSE oder Debian alle Kommandos, die mit play beginnen (was durch das ^-Zeichen festgelegt wird), bzw. deren Beschreibung. Das Red-Hat-apropos kennt die Option -r nicht.

Zuviel Online-Hilfe? Es ist sicher nicht immer ganz einfach, sich von Befehl zu Befehl durch die Man-Pages zu hangeln, gerade wenn man nach mehreren Kommandos sucht, um ein konkretes Problem zu lösen. Daher ist ein gutes Buch, in dem man auch als "Profi" immer mal wieder schmökern kann, nicht zu verachten. Man entdeckt dabei auch nach Jahren immer noch erstaunliche Dinge... (pju)

Die Autorin

Heike Jurzik studiert Germanistik, Informationsverarbeitung und Anglistik und jobbt nebenbei in der Benutzerberatung des Rechenzentrums der Uni Köln. Sie arbeitet seit 1996 auf Linux-Systemen. Und weil die Tastatur als Tasteninstrument ausreicht, spielt sie statt Klavier lieber Violine in einem Sinfonieorchester und liest bei Gelegenheit gern ein gutes Buch.

Copyright © 2000 Linux-Magazin Verlag