man-Befehl: Verwendung und Optionen, Abschnittsnummern und Suche mit man -k

TestumgebungRHEL-FamilieAlmaLinux 9.8man-db 2.9root-KontoDebian 12 · man-db 2.11 normales Konto
Shell-Befehleman, whatis, aproposSpeicherort/usr/bin/man

Wer auf einem Linux-Server nachsehen will, wie ein Befehl oder eine Konfigurationsdatei verwendet wird, öffnet mit dem man-Befehl die Handbuchseite und sucht mit man -k in den Kurzbeschreibungen, wenn der Name nicht bekannt ist. Bei der Suche nach der passwd-Seite auf Servern mit AlmaLinux 9 und Debian 12 gab es unter Debian 12 sowohl die Befehlsseite in Abschnitt 1 als auch die Dateiformatseite in Abschnitt 5, unter AlmaLinux 9 dagegen keine Seite in Abschnitt 5.

Die Ausgabe unten stammt von einem AlmaLinux-9.8-Server mit dem root-Konto und von einem Debian-12-Server mit einem normalen Konto. Hostname und Verbindungsadresse im Simulator sind Beispielwerte.

1️⃣ Grundlegende Verwendung des man-Befehls

  • ↪️ Seite öffnen, blättern und fehlende Seiten

Steht hinter man ein Befehlsname, öffnet sich die Handbuchseite dieses Befehls. man übergibt die Seite an ein Pager-Programm, das sie bildschirmweise ausgibt, und kehrt deshalb nach dem Start nicht sofort zum Prompt zurück. Der Pager wird über die Umgebungsvariable MANPAGER oder PAGER festgelegt; sind beide leer, wird less verwendet.

Wird die Ausgabe über eine Pipe weitergegeben, erscheint nur der Text ohne Pager. Die ersten 12 Zeilen von [man ls], mit head abgegriffen, zeigten in der ersten Zeile LS(1), danach folgten der Reihe nach die Abschnitte NAME, SYNOPSIS und DESCRIPTION.

man ls | head -n 12
LS(1)                            User Commands                           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 -cftuvSUX nor --sort  is  speci-
       fied.

Die Zahl 1 in der Klammer von LS(1) in der ersten Zeile ist die Nummer des Abschnitts, in dem diese Seite liegt.

Innerhalb einer Seite zeigt [Space] den nächsten Bildschirm, und [/Wort] mit Enter sucht nach einem Wort. [n] springt zur nächsten Stelle mit demselben Wort, und [q] beendet man.

Bei einem Namen, den es nicht gibt, erscheint der Fehler [No manual entry for], und der Exit-Code war 16.

man no-such-cmd9
No manual entry for no-such-cmd9
echo $?
16

Der Abschnitt EXIT STATUS der man-Seite beschreibt 16 als den Wert für den Fall, dass mindestens eine der Seiten, Dateien oder ein Suchwort nicht gefunden wurde. Ein Verwendungsfehler ergibt 1, sodass ein Skript die beiden Fälle getrennt behandeln kann.

2️⃣ Abschnittsnummern von man

  • ↪️ 1 Befehle, 5 Konfigurationsdateien, 8 Verwaltungsbefehle

Gibt es Seiten mit demselben Namen in mehreren Abschnitten, durchsucht der man-Befehl die Abschnitte in einer festen Reihenfolge und öffnet nur die erste gefundene Seite. Die Abschnitte reichen von 1 bis 9; bei der Arbeit am Server werden am häufigsten Abschnitt 1 für Befehle, Abschnitt 5 für Dateiformate und Abschnitt 8 für Verwaltungsbefehle geöffnet.

AbschnittEnthaltene SeitenBeispiel vom AlmaLinux-9.8-Server
1Ausführbare Programme und Shell-Befehlels, passwd, crontab, man
2Systemaufrufe (vom Kernel bereitgestellte Funktionen)
3Bibliotheksfunktionen
4Spezialdateien (meist unter /dev)
5Dateiformate und Konventionen, z. B. /etc/passwdcrontab
6Spiele
7Verschiedenes (Makropakete und Konventionen)
8Befehle zur Systemverwaltung, meist für rootuseradd, mandb
9Kernel-Routinen (nicht standardisiert)

crontab hat Seiten in zwei Abschnitten, weil der Befehl und das Format der Konfigurationsdatei denselben Namen tragen. Die Prüfung mit [man -f crontab] gab die Zeilen für Abschnitt 1 und Abschnitt 5 zusammen aus.

man -f crontab
crontab (1)          - maintains crontab files for individual users
crontab (5)          - files used to schedule the execution of programs

[man crontab] ohne Abschnittsnummer öffnet die Seite des Befehls crontab in Abschnitt 1. Um das Format der Datei für geplante Aufgaben zu sehen, wird vor den Namen eine 5 gesetzt.

man 5 crontab | head -n 4
CRONTAB(5)                       File Formats                       CRONTAB(5)

NAME
       crontab - files used to schedule the execution of programs

Die erste Zeile wechselte zu CRONTAB(5) und File Formats, und auch in der NAME-Zeile stand statt der Befehlsbeschreibung die Beschreibung der Datei für geplante Aufgaben.

Gibt es im angegebenen Abschnitt keine Seite mit diesem Namen, erscheint ein Fehler. Auf dem AlmaLinux-9.8-Server meldete [man 5 passwd], aufgerufen für das Dateiformat von /etc/passwd, dass es in Abschnitt 5 keine Seite gibt.

man 5 passwd
No manual entry for passwd in section 5

Auf dem Debian-12-Server gab [man -f passwd] zusätzlich die passwd-Zeile aus Abschnitt 5 aus. In welchen Abschnitten eine Seite vorhanden ist, hängt von den auf dem Server installierten Handbüchern ab; deshalb empfiehlt sich vor der Angabe einer Abschnittsnummer eine Prüfung mit [man -f].

man -f passwd
passwd (1)           - change user password
passwd (1ssl)        - OpenSSL application commands
passwd (5)           - the password file

Abschnitt 8 enthält Verwaltungsbefehle, die vor allem das root-Konto ausführt, etwa useradd zum Anlegen von Konten.

man -f useradd
useradd (8)          - create a new user or update default new user information

3️⃣ Optionen des man-Befehls und Suche mit -k und -f

  • ↪️ whatis, apropos und Dateipfade mit man -w

[man -f] gibt die einzeilige Beschreibung der Seiten mit demselben Namen aus und arbeitet wie whatis. Auf dem AlmaLinux-9.8-Server lieferten [man -f passwd] und [whatis passwd] dieselben zwei Zeilen.

man -f passwd
passwd (1)           - update user's authentication tokens
passwd (1ossl)       - OpenSSL application commands

Die Zeile 1ossl ist die Seite eines OpenSSL-Befehls, der ebenfalls passwd heißt.

Ist der Name nicht bekannt, durchsucht [man -k] Seitennamen und Kurzbeschreibungen. Das entspricht apropos, und das Suchwort wird als regulärer Ausdruck gelesen.

man -k '^passwd'
passwd (1)           - update user's authentication tokens
passwd (1ossl)       - OpenSSL application commands

^ steht für den Zeilenanfang, daher erschienen nur die Zeilen, die mit passwd beginnen. Die Suche funktioniert auch mit einem Wort aus der Beschreibung: [man -k 'directory contents'] fand neben ls auch die Seiten dir und vdir.

man -k 'directory contents'
dir (1)              - list directory contents
ls (1)               - list directory contents
vdir (1)             - list directory contents

[man -k] durchsucht nur die Kurzbeschreibungen im Abschnitt NAME und findet eine Seite deshalb weder über einen Optionsnamen noch über ein Wort aus dem Text. [man -K] sucht auch im Text, liest dafür aber alle Seiten nacheinander und braucht lange.

Wird das Suchwort nicht gefunden, erscheint [nothing appropriate], und der Exit-Code war 16.

man -k no-such-word9
no-such-word9: nothing appropriate.
echo $?
16

[man -w] gibt nur den Pfad der Quelldatei aus, ohne die Seite zu öffnen.

man -w ls
/usr/share/man/man1/ls.1.gz
man -w 5 crontab
/usr/share/man/man5/crontab.5.gz

Die beiden Dateien lagen in den Ordnern man1 und man5 unter /usr/share/man, und die Zahl im Ordnernamen stimmte mit der Abschnittsnummer überein. Auch die mit [man -w 1ossl passwd] gefundene Datei der 1ossl-Seite lag im Ordner man1, also im selben wie Abschnitt 1.

Die Optionen sind in den zwei Tabs unten zusammengefasst.

OptionKopierenBeschreibung
-f, --whatisGibt die einzeilige Beschreibung der Seiten mit demselben Namen aus. Entspricht whatis
-k, --aproposDurchsucht Seitennamen und Kurzbeschreibungen. Entspricht apropos
-w, --where, --path, --locationGibt nur den Pfad der Quelldatei aus, ohne die Seite zu öffnen
-a, --allGibt alle Seiten mit passendem Namen nacheinander aus
OptionKopierenBeschreibung
-K, --global-aproposSucht ein Wort im Text aller Seiten. Dauert lange
-S, -s, --sectionsListeLegt die zu durchsuchenden Abschnitte und ihre Reihenfolge als Liste fest, getrennt durch Kommas oder Doppelpunkte
-P, --pagerPagerLegt den Pager fest, der die Seite ausgibt. Standard ist less
-M, --manpath​Legt den Handbuchpfad fest, in dem nach Seiten gesucht wird
-L, --localelocaleLegt die Locale für diesen Aufruf fest
-l, --local-fileGibt die angegebene Datei als Seite aus, ohne die Systemhandbücher zu durchsuchen
-u, --updateAktualisiert die Index-Caches der installierten Seiten
-V, --versionGibt Versionsinformationen aus

🔲 Simulator für den man-Befehl

Im Simulator unten lässt sich mit [man ls] eine Seite öffnen und mit den Chips [Space], [/list], [n] und [q] durchblättern. Auf demselben virtuellen Server lässt sich wie bei [man 5 crontab] eine Abschnittsnummer angeben oder [man -f], [man -k] und [man -w] eingeben.

Simulator für den man-Befehlman-db 2.9 · root-Konto
[root@server work]#
Läuft nur im Browser. In der Seitenansicht werden die Chips Space, /Wort, n und q gedrückt, und die Tasten ↑↓ holen zuvor eingegebene Befehle zurück.

4️⃣ Aufbau einer man-Seite

  • ↪️ NAME, SYNOPSIS, DESCRIPTION und OPTIONS lesen

Eine man-Seite ist in Abschnitte mit Überschriften in Großbuchstaben gegliedert. Ein Vergleich der mit grep herausgefilterten Überschriften zeigte, dass die ls-Seite die Optionsbeschreibungen innerhalb von DESCRIPTION enthält, während die crontab-Seite einen eigenen Abschnitt OPTIONS hat.

man ls | grep -E '^[A-Z]+( [A-Z]+)*$'
NAME
SYNOPSIS
DESCRIPTION
AUTHOR
REPORTING BUGS
COPYRIGHT
SEE ALSO
man crontab | grep -E '^[A-Z]+( [A-Z]+)*$'
NAME
SYNOPSIS
DESCRIPTION
OPTIONS
CAVEATS
SEE ALSO
FILES
STANDARDS
DIAGNOSTICS
AUTHOR

Die Namen der Abschnitte unterscheiden sich von Seite zu Seite etwas; häufig kommen die folgenden vor.

AbschnittInhalt
NAMEName und einzeilige Beschreibung (die Zeile, die man -f und man -k ausgeben)
SYNOPSISSchreibweise des Befehls
DESCRIPTIONBeschreibung des Verhaltens (die ls-Seite führt hier auch die Optionen auf)
OPTIONSEin Absatz pro Option
EXIT STATUSBedeutung der Exit-Codes
FILESDateien, die der Befehl liest oder schreibt
SEE ALSOVerwandte Seiten

Die Zeichen in SYNOPSIS folgen Regeln, die die man-Seite festlegt. Was in eckigen Klammern steht, kann weggelassen werden. Optionen, die durch einen senkrechten Strich (|) getrennt sind, lassen sich nicht zusammen verwenden, und ein Argument mit drei Punkten (...) kann mehrfach angegeben werden.

Die SYNOPSIS von ls lautet ls [OPTION]... [FILE]..., daher lassen sich sowohl Befehlsoptionen als auch Befehlszeilenargumente wie Dateinamen ganz weglassen oder mehrfach angeben.

[--help] ist eine Kurzübersicht zur Verwendung, die das Programm selbst ausgibt, und erscheint deshalb ohne Pager direkt im Terminal. Die Usage-Zeile am Anfang von [ls --help] hatte dieselbe Form wie SYNOPSIS, und die gesamte Ausgabe war mit 121 Zeilen kürzer als die 245 Zeilen von [man ls].

ls --help | head -n 3
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Eine man-Seite enthält weitere Abschnitte, die in [--help] fehlen, etwa AUTHOR und SEE ALSO. Für einen schnellen Blick auf eine einzelne Option eignet sich [--help]; wird eine in Abschnitte gegliederte Beschreibung gebraucht, etwa zum Format einer Konfigurationsdatei oder zu Exit-Codes, wird die man-Seite geöffnet.

🔢 FAQ & empfohlene Inhalte

cd ist ein in bash eingebauter Befehl, daher führt [man cd] zu der Seite, die alle eingebauten Befehle zusammenfasst. Auf dem AlmaLinux-9.8-Server gab [type cd] die Zeile [cd is a shell builtin] aus, und [man -w cd] gab den Pfad der Datei builtins.1.gz aus. Die Verwendung eines einzelnen eingebauten Befehls lässt sich direkt mit [help cd] nachsehen.

[man -a Name] öffnet die Seiten mit passendem Namen nacheinander. Sollen nur die Dateipfade erscheinen, kommt [-w] hinzu. Auf dem AlmaLinux-9.8-Server gab [man -w -a crontab] zwei Zeilen mit den crontab-Dateien in den Ordnern man1 und man5 aus.

Den Index, den [man -k] und [man -f] durchsuchen, erstellt und aktualisiert mandb. Eine Seite, die noch nicht im Index steht, erscheint deshalb nicht in den Suchergebnissen; neu aufgebaut wird der Index, indem [mandb] mit dem root-Konto ausgeführt wird.

ℹ️ Affiliate-Hinweis
Die Inhalte dieser Website enthalten Affiliate-Links. Kauft ein Besucher über einen dieser Links ein Produkt oder eine Dienstleistung, erhält die Website vom Verkäufer eine Provision. Der Betrag, den der Käufer zahlt(bei Aktionsrabatten sinkt er ↓), steigt dadurch nicht. Angegebene Preise, Rabatte und Lagerbestände entsprechen dem Stand bei Erstellung und können abweichen; prüfe sie daher vor dem Kauf beim Verkäufer. Produkte werden nach eigenen Kriterien ausgewählt und bewertet, und Provisionen beeinflussen weder die Reihenfolge noch den Inhalt der Bewertungen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Beweisen Sie, dass Sie ein Mensch sind: 10   +   6   =