So verwenden Sie den man-Befehl von Linux: Versteckte Geheimnisse und Grundlagen

Das gesamte Wissen, das du über Linux benötigst, findest du in den sogenannten Manpages (Manual Pages). Sie dienen als umfassende Dokumentation für Befehle und Systemfunktionen. Selbst wenn dir der exakte Name eines Befehls nicht bekannt ist, kannst du über die Manpages nach einer Lösung für deine Aufgabe suchen. Doch wie genau findet man diese hilfreichen Manpages? Hier stellen wir dir einige nützliche Methoden vor.

Das integrierte Benutzerhandbuch von Linux

Es existiert ein alter Linux-Witz, der besagt, dass der einzige Befehl, den man wirklich kennen muss, `man` ist – der zentrale Einstiegspunkt ins Benutzerhandbuch. Tatsächlich steckt ein Körnchen Wahrheit in dieser Aussage, obwohl selbst der Befehl `man` zu Beginn etwas verwirrend sein kann, insbesondere wenn es darum geht, die benötigten Informationen zu finden.

Kenntnisse die Situation, in der du wusstest, was du erreichen wolltest, aber der Befehl dafür war dir unbekannt? Diese Erfahrung ist weitverbreitet. Es ist vergleichbar mit dem Versuch, ein Wort im Wörterbuch nachzuschlagen, ohne das Wort selbst zu kennen. Aber keine Sorge, es gibt Wege, dieses Problem mit dem Befehl `man` zu lösen.

Ein weiteres Thema, das am Anfang oft Fragen aufwirft, sind die Zahlen in der Form von `man(2)` oder `man(5)`. Auch Befehle werden oft mit einer Zahl versehen, beispielsweise `mount(2)` oder `mount(8)`. Doch was bedeuten diese Zahlen? Und kann es wirklich mehrere Varianten desselben Befehls geben? Die Antwort ist ja, und die Zahlen sind entscheidend und gleichzeitig recht einfach zu verstehen.

Die Suche im Manual selbst ist recht benutzerfreundlich, sobald man die grundlegenden Techniken verinnerlicht hat. Es existieren zudem einige clevere Wege, wie du innerhalb der Manpages suchen und navigieren kannst. Lass uns diese nun genauer unter die Lupe nehmen.

Die Handbuchseiten öffnen

Um `man` zu nutzen, gib den Befehl `man` in die Kommandozeile ein, gefolgt von einem Leerzeichen und dem Namen eines Linux-Befehls. `man` wird dann die entsprechende Manpage öffnen, die diesen Befehl detailliert beschreibt – vorausgesetzt, sie ist vorhanden.

Lass uns nun folgendes eintippen und sehen, was die Manpage über `man` selbst zu sagen hat:

man man

Die Manpage für `man` wird sich nun öffnen.

Wie du siehst, ist dies die `man(1)`-Seite.

Hier sind einige Tipps zur Navigation innerhalb einer Manpage:

  • Zeilenweises Scrollen: Verwende das Mausrad oder die Pfeiltasten (hoch/runter) sowie die Eingabetaste.
  • Bildschirmweises Scrollen: Nutze die Leertaste, sowie die Bild-aufwärts- und Bild-abwärts-Tasten (PgDn und PgUp).
  • Zum Anfang oder Ende springen: Betätige die Home- und Ende-Tasten.

Durch Drücken der Taste `H` gelangst du zu einem Hilfebereich mit einer Liste alternativer Tastenkombinationen. Die oben genannten Optionen dürften jedoch für die meisten Benutzer intuitiver sein.

Um `man` zu verlassen, drücke einfach `Q`.

Die Struktur einer Manpage

Am oberen Rand jeder Manpage findest du die Überschriften „Name“ und „Synopsis“. Es gibt eine klare Konvention für den Aufbau von Manpages, die Befehle, Programme und Programmfunktionen (Bibliotheksroutinen) dokumentieren. Nicht jede Manpage wird alle diese Überschriften aufweisen, da einige spezifisch für bestimmte Befehlstypen sind.

Hier ist eine Auswahl der häufigsten Überschriften:

Name: Der Name des Befehls, den die Manpage beschreibt.
Synopsis: Eine Zusammenfassung des Befehls und seiner Syntax.
Konfiguration: Konfigurationsdetails für ein Gerät.
Beschreibung: Eine Erläuterung der Funktion des Programms.
Optionen: Eine Beschreibung der Befehlszeilenoptionen, die der Befehl akzeptiert.
Exit-Status: Mögliche Rückgabewerte des Befehls und ihre Bedeutung.
Rückgabewert: Wenn die Manpage eine Bibliotheksroutine beschreibt, wird der Wert erläutert, den die Routine zurückgibt.
Fehler: Eine Auflistung von Werten, die im Fehlerfall in `errno` geschrieben werden können im Fehlerfall.
Umgebung: Eine Auflistung von Umgebungsvariablen, die den Befehl beeinflussen.
Dateien: Eine Auflistung der vom Befehl genutzten Dateien, beispielsweise Konfigurationsdateien.
Attribute: Eine Zusammenfassung verschiedener Attribute des Befehls.
Versionen: Details zu Linux-Kernel- oder Bibliotheksversionen, in denen ein Systemaufruf oder eine Bibliotheksfunktion eingeführt wurde.
Übereinstimmung mit: Eine Auflistung von Standards, die der Befehl einhalten kann, wie POSIX.
Anmerkungen: Sonstige Anmerkungen.
Bugs: Bekannte Fehler und Probleme.
Beispiele: Beispiele für die Anwendung des Befehls.
Autoren: Die Personen, die den Befehl entwickelt oder gewartet haben.
Siehe auch: Empfehlungen für weitere Lektüre zum Thema.

Die Abschnitte der Manpages

Wenn du ein paar Seiten nach unten scrollst, siehst du eine Liste der Abschnitte im Handbuch.

Die Abschnitte sind:

1. Allgemeine Befehle: Befehle, die du in der Befehlszeile verwenden kannst.
2. Systemaufrufe: Funktionen, die der Kernel bereitstellt und die Programme aufrufen können.
3. Bibliotheksfunktionen: Funktionen, die Programme aus Codebibliotheken (meist C-Standardbibliothek) aufrufen können.
4. Spezielle Dateien: Geräte, wie sie unter `/dev` zu finden sind, und ihre Treiber.
5. Dateiformate und Konventionen: Formate für Dateien wie `passwd`, `cron`-Tabellen und `tar`-Archive.
6. Spiele: Beschreibungen von Befehlen wie `fortune`, die Zitate aus einer Datenbank ausgeben.
7. Verschiedenes: Beschreibungen von Dingen wie Inodes, Bootparameter und `man` selbst.
8. Systemverwaltung: Befehle und Daemons, die in der Regel für den Root-Benutzer reserviert sind.
9. Kernel-Routinen: Informationen zur internen Funktionsweise des Kernels, einschließlich Funktionsschnittstellen und Variablen. Dieser Abschnitt ist auf den meisten Systemen nicht installiert.

Wenn ein Befehl mit einer Zahl angegeben wird (z.B. `man(1)`), bezieht sich dies auf die Beschreibung des Befehls in dem jeweiligen Abschnitt des Handbuchs. `man(1)` beschreibt also den Befehl `man` im ersten Abschnitt.

Im obigen Bild siehst du eine Referenz auf `man(7)`. Das bedeutet, dass es einen weiteren Eintrag für `man` in einem anderen Abschnitt gibt. Als wir die Manpage zu Beginn öffneten, sahen wir `man(1)`. Wenn du nur `man` ohne Abschnittsnummer eingibst, durchsucht `man` alle Abschnitte der Reihe nach und findet in der Regel zuerst `man(1)`.

Möchtest du `man` zwingen, einen Eintrag aus einem bestimmten Abschnitt zu suchen, musst du die Abschnittsnummer in die Befehlszeile eingeben.

Um beispielsweise den Eintrag für `man` im Abschnitt sieben zu öffnen, geben wir Folgendes ein:

man 7 man

Das Handbuch öffnet sich nun mit dem `man`-Eintrag aus dem siebten Abschnitt.

Diese Manpage enthält Anweisungen zum Schreiben von Manpages. Sie beschreibt das Dateiformat und die Makros, die du verwenden kannst, um einen Teil der Arbeit zu automatisieren. Die `man(1)`-Seite, die wir uns zuvor angesehen haben, beschreibt hingegen die Verwendung von `man` selbst.

So findest du Einträge in Abschnitten

Wenn du einfach nur wissen möchtest, wie ein Befehl verwendet wird, musst du in der Regel keine Abschnittsnummer angeben. `man` findet normalerweise den Standardeintrag, der die Verwendung dieses Befehls im ersten Abschnitt beschreibt. Manchmal kann es jedoch erforderlich sein, einen Eintrag in einem bestimmten Abschnitt zu öffnen, weil du spezielle Informationen suchst.

Du kannst leicht herausfinden, welche Abschnitte Einträge für einen Befehl haben. Jede Manpage hat einen Titel und eine kurze Beschreibung. Die Option `-f` (whatis) durchsucht die Seitentitel und gibt eine Liste mit Übereinstimmungen aus.

Für dieses Beispiel geben wir folgendes ein:

man -f man

Die beiden `man`-Seiten werden zusammen mit ihren Abschnittsnummern und Kurzbeschreibungen angezeigt. Sei jedoch vorsichtig, da einige Einträge denselben Namen haben, aber unterschiedliche Befehle und Funktionen beschreiben können.

Wir geben zum Beispiel Folgendes ein:

man -f printf

Es scheint, dass zwei Einträge für `printf` gefunden wurden: einer im ersten und ein weiterer im dritten Abschnitt. Dies sind jedoch unterschiedliche Befehle. Die Manpage im ersten Abschnitt beschreibt den Befehl `printf` für die Kommandozeile, der die Ausgabe im Terminalfenster formatiert. Die Manpage im dritten Abschnitt beschreibt die `printf`- Familie von Bibliotheksfunktionen in der Programmiersprache C.

Es ist auch möglich, die Kurzbeschreibungen und Seitentitel zu durchsuchen. Dazu verwendest du die Option `-k` (apropos). Diese Option findet auch Treffer mit dem Suchbegriff in längeren Wörtern.

Wir geben folgendes ein:

man -k printf

Viele dieser Befehle werden auf denselben Manpages beschrieben, da ihre Kernfunktionalität im Wesentlichen gleich ist. Die Manpage für `vprintf` beschreibt die Funktionalität von 10 der oben genannten Befehle.

Du kannst diese Funktion nutzen, um nach Informationen zu suchen, die sich auf dein gewünschtes Ziel beziehen, selbst wenn du den genauen Namen des Befehls nicht kennst.

Nehmen wir an, du möchtest das Passwort eines Benutzerkontos ändern. Wir können nach allen Befehlen suchen, die „Benutzer“ in den Titeln oder Beschreibungen der Manpages erwähnen. Dann können wir die Ergebnisse durch `grep` leiten, um Einträge zu finden, die auch „Passwort“ enthalten.

Dazu geben wir Folgendes ein:

man -k 'user ' | grep password

Da wir das Wort „Benutzer“ in einfache Anführungszeichen gesetzt und am Ende ein Leerzeichen eingefügt haben, werden nur Einträge für „Benutzer“ und nicht für „Benutzer“ gefunden. Ein kurzer Blick durch die Suchergebnisse zeigt uns, dass der wahrscheinlichste Kandidat `passwd` ist.

Da es sich um eine Manpage für Abschnitt 1 handelt und wir die Abschnittsnummer nicht in den Befehl einfügen müssen, geben wir Folgendes ein:

man passwd

Nehmen wir an, wir suchen einen Befehl, der die Anzahl der Wörter in einer Textdatei zählt. Wir geben Folgendes ein, um zu sehen, ob es so etwas gibt:

man -k word | grep count

Um alles über das Zählen von Wörtern zu erfahren, geben wir diesen Befehl ein:

man wc

Apropos `wc`, wir können die Option `-k` (apropos) auch mit einem einzelnen Punkt (.) als Suchziel verwenden, der mit allem übereinstimmt. Wenn wir das durch `wc` leiten und die Option `-l` (Zeilen) verwenden, erfahren wir, wie viele Manpages sich auf unserem Computer befinden.

Um all dies zu tun, geben wir den folgenden Befehl ein:

man -k . | wc -l

Es gibt 6.706 Manpages auf diesem Ubuntu-Computer, aber die Zahl kann auf deinem System anders sein. Sie kann variieren, je nachdem, welche Softwarepakete und Dienstprogramme installiert sind und welche Manpages vorinstalliert wurden.

Suchen innerhalb einer Manpage

Du kannst auch innerhalb einer Manpage vorwärts oder rückwärts suchen.

In diesem Beispiel geben wir Folgendes ein, um die Manpage für den Befehl `history` zu öffnen:

man history

Um vorwärts zu suchen, drücken wir den Schrägstrich (/) und geben dann das Wort „Ereignis“ ein. Das Suchziel erscheint unten im Terminalfenster und wir drücken die Eingabetaste, um die Suche zu starten.

Das Fenster zeigt das erste Ergebnis aller gefundenen Übereinstimmungen an, diese werden hervorgehoben.

Drücke `n`, um von Ergebnis zu Ergebnis bis zum Ende der Seite zu gelangen. Um rückwärts durch die Manpage zu suchen, drücke `N`; das führt dich zurück zum Anfang der Seite.

Um die Hervorhebung ein- und auszuschalten, drücke Esc+U.

Wenn du dich am unteren Rand der Manpage befindest und nach oben suchen möchtest, drücke das Fragezeichen (?) und gib dann den Suchbegriff ein. Wir haben nach „Eintrag“ gesucht.

Auch hier werden alle übereinstimmenden Ergebnisse hervorgehoben.

Um zum nächsten übereinstimmenden Ergebnis zu gelangen, drücke `n`, um zum Anfang der Manpage zu gelangen. Drücke `N`, um zum vorherigen übereinstimmenden Ergebnis zu gelangen und bis zum Ende der Manpage zu scrollen.

Es gibt noch eine andere Möglichkeit, eine Manpage zu durchsuchen. Dabei werden alle Zeilen ausgeblendet, die keine Übereinstimmung mit deinem Suchbegriff enthalten. Es ist daher ratsam, bei dieser Methode Zeilennummern zu verwenden.

Wenn wir `-N` eingeben und die Eingabetaste drücken, können wir die Zeilennummern in der Manpage anzeigen lassen.

Wir drücken das kaufmännische Und (&), geben unseren Suchbegriff („Zahl“) ein und drücken dann die Eingabetaste.

Es werden nur die Zeilen angezeigt, die unseren Suchbegriff enthalten.

Es ist einfach, diese zu überfliegen und alle zu finden, die interessant aussehen. Zeile 292 sieht vielversprechend aus, also wollen wir zu diesem Abschnitt der Manpage gehen und ihn überprüfen.

Um alle Zeilen wieder anzuzeigen, drücken wir das kaufmännische Und (&) und dann die Eingabetaste.

Wir geben `292` und dann `g` ein, um zu dieser Zeile zu gelangen.

Sobald wir `g` eingeben, werden wir zu Zeile 292 springen (weshalb das `g` im obigen Bild nicht erscheint). Zeile 292 wird dann oben im Terminalfenster angezeigt.

Du kannst `-n` drücken und die Eingabetaste betätigen, um die Zeilennummern wieder zu entfernen.

Das fabelhafte Handbuch

Die Manpages enthalten eine Fülle von Informationen. Selbst bei Befehlen, die du gut zu kennen glaubst, wirst du wahrscheinlich Optionen entdecken, von denen du noch nichts wusstest.

Du wirst ganz sicher Befehle finden, von denen du vorher nicht wusstest, dass sie existieren. Mit so vielen verschiedenen Möglichkeiten zum Suchen und Finden von Informationen ist es großartig, alles zur Hand zu haben.