Linux / Befehl whatis: Einzeilige Befehlsbeschreibungen anzeigen

whatis ist ein Befehl, der nach dem Namen einer Handbuchseite sucht und eine einzeilige Beschreibung dieser Seite anzeigt. Er ist nützlich, wenn man den Namen des Befehls kennt, aber schnell überprüfen möchte, was er tut, oder sehen möchte, ob derselbe Name in mehreren Handbuchabschnitten existiert.

Standardmäßig sucht er nach dem genauen Seitennamen, und man -f kann auch für denselben Zweck verwendet werden. Wenn man breiter nach Thema oder Schlüsselwörtern in der Beschreibung suchen möchte, ist apropos besser geeignet als whatis.

Was ist der Befehl whatis?

Der NAME-Abschnitt einer Handbuchseite enthält den Seitennamen und eine kurze Beschreibung. whatis durchsucht die man-db-Indexdatenbank nach einer Seite, die dem angegebenen Namen entspricht, und gibt diese Beschreibung in einer einzigen Zeile aus.

Da es nicht das vollständige Handbuch öffnet, ist es gut, um schnell einen Überblick über mehrere Befehle zu erhalten. Es ist jedoch kein Werkzeug, um den Speicherort einer ausführbaren Datei anzuzeigen oder zu zeigen, welcher Befehl tatsächlich von der Shell ausgewählt wird.

Grundsyntax und Lesen der Ausgabe

whatis [option] name...

Überprüfen Sie die Ein-Zeilen-Beschreibung von ls.

whatis ls

Die Ausgabe hat im Allgemeinen die folgende Struktur.

ls (1)               - list directory contents

ls ist der Seitenname, (1) ist der Handbuchabschnitt, und der Text nach dem Bindestrich ist die einzeilige Beschreibung. Um die gesamte Verwendung zu sehen, öffnen Sie sie mit der Abschnittsnummer und dem Namen des Ergebnisses.

man 1 ls

Mehrere Namen gleichzeitig überprüfen

Wenn Sie mehrere Argumente angeben, können Sie die Ergebnisse für jeden Namen zusammen sehen.

whatis ls cp mv rm

Dies ist nützlich, wenn Sie die Funktionen grundlegender Befehle vergleichen oder die auf einem Server installierten Handbücher überprüfen. Auch wenn einige Namen nicht existieren, können die Ergebnisse für andere Namen angezeigt werden, daher sollten Sie bei der Automatisierung sowohl den endgültigen Exit-Status als auch die einzelnen Ergebnisse überprüfen.

Wenn derselbe Name in mehreren Abschnitten erscheint

Wenn derselbe Seitenname in mehreren Handbuchabschnitten existiert, kann whatis mehrere Zeilen ausgeben. Ein häufiges Beispiel ist passwd, das in einen Benutzerbefehl und ein Dateiformatdokument unterteilt ist.

whatis passwd

Wenn Sie passwd(1) und passwd(5) in den Ergebnissen sehen, öffnen Sie jede wie folgt.

man 1 passwd
man 5 passwd

Die Zahl in Klammern steht nicht für die Programmversion, sondern für den Handbuchabschnitt. Die Befehlsnutzung findet man normalerweise in Abschnitt 1 oder 8, und Konfigurationsdateiformate befinden sich hauptsächlich in Abschnitt 5.

Regulärer Ausdruck und Platzhaltersuche

Regulärer Ausdruck -r

-r oder --regex interpretiert den eingegebenen Namen als regulären Ausdruck. Ergebnisse können erscheinen, selbst wenn nur ein Teil des Seitennamens übereinstimmt.

whatis -r '^ssh'
whatis --regex 'printf$'

Es ist sicherer, Sonderzeichen des regulären Ausdrucks in Anführungszeichen zu setzen, damit sie nicht zuerst von der Shell interpretiert werden.

Platzhalter -w

-w oder --wildcard findet Namen mit Shell-ähnlichen Platzhaltermustern. Das erweiterte Muster muss mit dem gesamten Seitennamen übereinstimmen.

whatis -w 'ssh*'
whatis --wildcard '*printf*'

Ohne Anführungszeichen könnte * zuerst auf Dateinamen im aktuellen Verzeichnis erweitert werden.

Einschränkung von Handbuchabschnitten

Mit -s oder --sections können Sie nur die gewünschten Abschnitte durchsuchen.

whatis -s 1 passwd
whatis -s 5 passwd
whatis --sections=2,3 printf
Abschnitt Hauptinhalt
1 Allgemeine Benutzerbefehle und ausführbare Programme
2 Systemaufrufe
3 Bibliotheksfunktionen
5 Konfigurationsdateien und Dateiformate
8 Systemverwaltungsbefehle

Häufig verwendete 'whatis'-Optionen

Option Beschreibung
-r, --regex Verarbeitet den eingegebenen Namen als regulären Ausdruck.
-w, --wildcard Sucht mit Shell-ähnlichen Platzhaltermustern.
-s list, --sections=list Durchsucht nur die angegebenen Handbuchabschnitte.
-l, --long Deaktiviert das Verhalten, Beschreibungen zu kürzen, um in die Terminalbreite zu passen.
-M path, --manpath=path Gibt den Pfad der Handbuchhierarchie zum Durchsuchen an.
-L locale, --locale=locale Gibt die zu verwendende Locale für diese Ausführung an.

Beziehung zwischen 'whatis' und 'man -f'

In einer man-db-Umgebung durchsucht man -f die Kurzbeschreibung der Seite auf die gleiche Weise wie whatis.

whatis printf
man -f printf

Sie können das Format verwenden, das leichter zu merken ist. man -f ist leicht zu merken als verwandte Funktion von man, und whatis zeigt in seinem Namen deutlich, dass es für die Überprüfung einer einzeiligen Beschreibung gedacht ist.

Unterschiede zwischen whatis, apropos und type

Befehl Beantwortete Fragen
whatis ls Was beschreibt die Handbuchseite mit diesem Namen?
apropos copy Welche Handbuchseiten stehen in Zusammenhang mit diesem Thema?
type ls Wie interpretiert die aktuelle Shell diesen Befehlsnamen?
command -v ls Kann die aktuelle Shell diesen Befehl finden und in welcher Form?

Ein whatis-Ergebnis bedeutet nicht, dass ein ausführbares Programm mit demselben Namen aktuell in PATH vorhanden ist. Umgekehrt kann es selbst dann, wenn ein ausführbares Programm existiert, kein Ergebnis geben, wenn die Handbuchseite nicht installiert ist.

Fehlerbehebung, wenn keine Suchergebnisse vorhanden sind

Überprüfen Sie den Seitennamen und den Installationsstatus

whatis findet im Wesentlichen den genauen Seitennamen. Wenn Sie Wörter aus einem Thema oder einer Beschreibung eingegeben haben, verwenden Sie apropos und prüfen Sie die Existenz einer ausführbaren Datei mit command -v.

apropos archive
command -v tar
whatis tar

Aktualisierung der Index-Datenbank

Wenn Sie das Handbuch kürzlich installiert haben, aber keine Ergebnisse angezeigt werden, wurde der man-db-Index möglicherweise noch nicht aktualisiert.

sudo mandb

Das System kann es auch automatisch während der Paketinstallation oder geplanter Aufgaben aktualisieren. In Umgebungen ohne Administratorrechte überprüfen Sie zunächst den Pfad des Benutzerhandbuchs und die Distributions-Einstellungen.

Überprüfen Sie die Locale- und MANPATH-Einstellungen

locale
manpath
printf '%s\n' "$MANPATH"

Das erwartete Dokument könnte aufgrund des Index für ein bestimmtes Gebietsschema oder eines vom Benutzer angegebenen MANPATH nicht gefunden werden.

Verwendung von Ergebnissen in einem Skript

Sie können in einem Skript das Vorhandensein eines Handbuchs überprüfen, aber die Ausgabemeldung kann je nach Gebietsschema und Dokumentinhalt variieren. Anstatt die Anzeigestruktur zu analysieren, verwenden Sie den Exit-Status, und wenn Ihr Ziel darin besteht zu überprüfen, ob der tatsächliche Befehl existiert, verwenden Sie command -v.

if whatis "$1" >/dev/null 2>&1; then
 printf '%s\n' 'Manual description found.'
else
 printf '%s\n' 'Manual description not found.' >&2
fi

Häufig gestellte Fragen

Zeigt whatis den tatsächlichen Pfad eines Befehls an?

Nein. Es zeigt den Namen und die Beschreibung der Handbuchseite an. Überprüfen Sie den Ausführungspfad und den Befehlstyp mit type oder command -v.

Wie kann ich nach Wörtern suchen, die in der Beschreibung enthalten sind?

Verwenden Sie apropos keyword oder man -k keyword. whatis ist grundsätzlich geeignet, wenn Sie den Seitennamen bereits kennen.

Warum wird derselbe Name auf mehreren Zeilen gedruckt?

Weil es Seiten mit demselben Namen in verschiedenen Handbuchabschnitten gibt. Überprüfen Sie die Abschnittsnummer in Klammern und öffnen Sie die gewünschte Seite mit man section name.

Zusammenfassung

whatis ist ein Werkzeug, um die Rolle eines bekannten Handbuchseitennamens in einer Zeile zu überprüfen. Es hilft, Seiten mit demselben Namen in verschiedenen Abschnitten zu unterscheiden, mehrere Namen schnell zu überprüfen und Kandidaten zu prüfen, bevor das erforderliche Dokument mit man geöffnet wird.

Beim Suchen nach Dokumenten mit funktionalen Schlüsselwörtern verwenden Sie apropos, und beim Überprüfen der tatsächlichen Befehlsinterpretation verwenden Sie type oder command -v. Weitere grundlegende Befehle finden Sie in Liste und Übersicht der Linux-Befehle.

Verweisen Sie auf offizielle Dokumente