Linux / Befehl apropos: Befehle nach Beschreibung suchen

apropos ist ein Befehl, der nach Schlüsselwörtern im Namen und der einzeiligen Beschreibung von Handbuchseiten sucht, wenn Sie den genauen Befehlsnamen nicht kennen. Zum Beispiel ist es nützlich, Kandidaten zu finden, wenn Sie die Aufgabe kennen, die Sie ausführen möchten, wie „Dateikomprimierung“, „Benutzererstellung“ oder „Netzwerkadresse“, aber den zugehörigen Befehl nicht kennen.

man -k bietet dieselbe Suchfunktion. Da die Standard-Suchbegriffe als reguläre Ausdrücke verarbeitet werden können, kann das Verständnis der Beziehungen zwischen mehreren Wörtern, exakten Suchanfragen, Platzhaltern und Shell-Zitierregeln genauere Ergebnisse liefern.

Was ist der Befehl apropos?

Jede Handbuchseite hat eine kurze Beschreibung, die ihren Namen und ihre Funktionalität zusammenfasst. apropos durchsucht die Seitennamen und Beschreibungen in der man-db-Indexdatenbank und gibt passende Einträge aus.

Es ist kein Befehl, um den gesamten Handbuchinhalt zu durchsuchen. Daher sind die Ergebnisse schnell und gut geeignet, um themenspezifische Kandidaten zu finden, aber Seiten, die das Schlüsselwort nicht in der Beschreibung enthalten, können nicht erscheinen, selbst wenn der Inhalt verwandte Informationen enthält.

Grundlegende Syntax und Lesen der Ergebnisse

apropos [option] keyword...

Hier ist ein Beispiel für das Finden von Handbüchern, die sich auf das Kopieren von Dateien beziehen.

apropos copy

Typische Ergebnisse haben die folgende Struktur.

cp (1)               - copy files and directories
scp (1)              - OpenSSH secure file copy

Das erste Feld ist der Name der Handbuchseite, die Zahl in Klammern ist der Abschnitt, und die Beschreibung nach dem Bindestrich ist eine einzeilige Erklärung. Sobald Sie den gewünschten Eintrag gefunden haben, geben Sie den Abschnitt an, um die genaue Seite zu öffnen.

man 1 cp
man 1 scp

Mehrfach-Keyword-Suchmethoden

Standardmäßig werden Einträge angezeigt, wenn mindestens eines übereinstimmt

Beim Angeben mehrerer Schlüsselwörter können standardmäßig Einträge angezeigt werden, die mindestens eines davon enthalten. Der Suchbereich kann groß werden, was zu zu vielen Ergebnissen führt.

apropos network address

Verwenden Sie -a, wenn alle Schlüsselwörter erforderlich sind

-a oder --and zeigt nur Einträge an, die mit allen angegebenen Schlüsselwörtern übereinstimmen. Dies ist nützlich, um irrelevante Ergebnisse zu reduzieren.

apropos -a network address
apropos --and user password

Sie können Anführungszeichen verwenden, um mehrere Wörter zu einem einzigen Suchausdruck zusammenzufassen, aber denken Sie daran, dass die Standardsuche ein regulärer Ausdruck ist.

Reguläre Ausdrücke, exakte Suchen und Platzhalter

Einfache Suche mit regulären Ausdrücken

der apropos von man-db behandelt Schlüsselwörter standardmäßig als reguläre Ausdrücke. Zeichen wie Punkte, Klammern und Sternchen können besondere Bedeutungen haben, daher müssen Sie, um nach ihnen wörtlich zu suchen, sie maskieren oder einen anderen Suchmodus verwenden.

apropos '^ssh'
apropos 'file.*system'

Das erste Beispiel findet Teile, die mit ssh im Namen oder in der Beschreibung beginnen, und das zweite Beispiel findet Einträge, bei denen ein beliebiges Zeichen nach file steht und später system erscheint.

Exakte Übereinstimmung -e

-e oder --exact stimmen genau mit dem Schlüsselwort im Seitennamen oder in der Beschreibung überein. Wenn Sie den genauen Seitennamen bereits kennen, könnte whatis einfacher sein.

apropos -e printf

Shell-Style Wildcard -w

-w oder --wildcard behandelt das Schlüsselwort als Shell-Style-Wildcard-Muster. Setzen Sie das Muster in Anführungszeichen, damit die aktuelle Shell das Sternchen nicht zuerst auf Dateinamen erweitert.

apropos -w 'ssh*'
apropos --wildcard '*password*'

Suchbereich auf Abschnitte beschränken

Die Verwendung von -s oder --sections zur Begrenzung der Handbuchabschnitte kann Ergebnisse mit demselben Namen aus anderen Dokumenten oder nicht verwandten Einträgen reduzieren.

apropos -s 1 archive
apropos -s 2,3 socket
apropos --sections=5 password
Abschnitt Hauptinhalt
1 Befehle und Programme, die von allgemeinen Benutzern ausgeführt werden
2 Systemaufrufe, die vom Linux-Kernel bereitgestellt werden
3 Programmbibliotheksfunktionen
5 Konfigurationsdateien und Dateiformate
8 Systemverwaltungsbefehle, die hauptsächlich von Administratoren verwendet werden

Die Abschnittsliste kann durch Kommas oder Doppelpunkte getrennt werden. Je nach Implementierung und installierter Dokumentation kann es Unterabschnitte wie 3p oder 3perl geben.

Häufig verwendete Apropos-Optionen

Option Beschreibung
-a, --and Gibt nur Elemente aus, die alle Schlüsselwörter enthalten.
-e, --exact Vergleicht Schlüsselwörter genau mit Seitennamen oder Beschreibungen.
-r, --regex Behandelt Schlüsselwörter als reguläre Ausdrücke. Dies ist die Standard-Suchmethode in man-db.
-w, --wildcard Sucht mit Shell-ähnlichen Platzhaltermustern.
-s list, --sections=list Durchsucht nur die angegebenen Handbuchabschnitte.
-l, --long Deaktiviert das Abschneiden von Beschreibungen, um in die Terminalbreite zu passen.
-M path, --manpath=path Geben Sie den Pfad der Handbuchhierarchie an, um direkt zu suchen.
-L locale, --locale=locale Geben Sie vorübergehend die zu verwendende Gebietsschema für die Suche an.

Was ist die Beziehung zwischen apropos und man -k?

In der man-db-Umgebung ist man -k eine Schnittstelle, die apropos Suchoptionen verwendet. Die folgenden zwei Befehle können für den gleichen Zweck verwendet werden.

apropos filesystem
man -k filesystem

Sie können je nach Ihren Gebrauchgewohnheiten wählen. Wenn Sie betonen möchten, dass es sich um einen Prozess des Findens eines Handbuchs handelt, ist man -k geeignet; wenn Sie es als eigenständigen Suchbefehl merken möchten, ist apropos intuitiver.

Punkte, die zu überprüfen sind, wenn keine Suchergebnisse erscheinen

Zu einem allgemeineren Schlüsselwort wechseln

Verwenden Sie englische Wörter, die wahrscheinlich tatsächlich in der Beschreibung enthalten sind. Wenn das übersetzte Handbuch nicht installiert ist, werden die Ergebnisse möglicherweise nicht für einen lokalisierten Suchbegriff angezeigt.

apropos compress
apropos archive
apropos -a user account

Aktualisierung der Index-Datenbank

Unmittelbar nach der Installation eines neuen Handbuchs oder wenn der Index beschädigt ist, können die Ergebnisse von apropos leer sein. In einer man-db-Umgebung können Sie den Index mit Administratorrechten aktualisieren.

sudo mandb

mandb erstellt oder aktualisiert den Index-Cache der Handbuchseite. Da das System ihn möglicherweise während der Paketinstallation oder periodischer Aufgaben automatisch aktualisiert, ist es nicht erforderlich, ihn ohne Grund wiederholt auszuführen.

Überprüfung der Handbuchpfade und -lokalisierungen

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

Wenn Sie MANPATH manuell gesetzt oder Dokumente in einem speziellen Pfad installiert haben, kann die standardmäßige manuelle Hierarchie bei der Suche übersprungen werden. Die Option -M kann verwendet werden, um vorübergehend einen anderen Pfad anzugeben, wenn Probleme diagnostiziert werden.

Verwendung in Shell-Skripten

In man-db gibt apropos 0 zurück, wenn es normal ausgeführt wird, 1 bei Nutzungs- oder Konfigurationsfehlern, 2 bei Betriebsfehlern und 16, wenn keine passenden Ergebnisse vorhanden sind. Durch die Unterscheidung des Beendigungsstatus statt nur zu prüfen, ob die Ausgabe leer ist, können Fehler von fehlenden Suchergebnissen unterschieden werden.

if apropos -e "$1" >/dev/null; then
 printf '%s\n' 'There are matching manual entries.'
else
 status=$?
 printf 'Search failed or no results: status=%d\n' "$status" >&2
fi

Die Werte des Beendigungsstatus können in anderen Implementierungen variieren. Überprüfen Sie man apropos auf Ihrem aktuellen System, bevor Sie es für die Automatisierung verwenden.

Vergleich von Befehlen, die apropos ähneln

Befehl Zweck
apropos keyword Sucht nach Themen oder Schlüsselwörtern im Seitennamen und in der einzeiligen Beschreibung.
whatis name Überprüft die einzeilige Beschreibung des genauen Handbuchseitennamens.
man name Liest den vollständigen Inhalt der ausgewählten Handbuchseite.
man -K string Durchsucht den gesamten installierten Handbuchtext nach einer Zeichenfolge. Dies kann lange dauern.

Häufig gestellte Fragen

Kann ich mit lokalisierten Schlüsselwörtern suchen?

Ja, wenn lokalisierte Handbuchbeschreibungen installiert und durch die aktuelle Gebietsschemaeinstellung ausgewählt sind. Viele Systeme beinhalten nur englische Beschreibungen, daher versuchen Sie englische Schlüsselwörter, wenn eine lokalisierte Suche keine Ergebnisse liefert.

Was ist, wenn der Suchbegriff Leerzeichen enthält?

Um es als einzelnen Ausdruck zu übergeben, setzen Sie es in Anführungszeichen. Wenn Sie mehrere unabhängige Schlüsselwörter eingeben und -a verwenden, werden nur Einträge gefunden, bei denen jedes Wort übereinstimmt.

Soll ich apropos anstelle von which verwenden?

Sie haben unterschiedliche Zwecke. apropos findet relevante Handbücher, und command -v oder type prüft, wie der eingegebene Befehlsname tatsächlich interpretiert wird.

Zusammenfassung

apropos ist nützlich, wenn Sie einen Befehl oder ein Dokument anhand von Funktionsschlüsselwörtern finden möchten, ohne seinen Namen zu kennen. Sie können Kandidaten mit der Basissuche finden, mehrere Bedingungen mit -a erfüllen und Abschnitte mit -s eingrenzen, um die Ergebnisse effizient zu organisieren.

Nachdem Sie die gewünschte Seite gefunden haben, öffnen Sie sie mit man zusammen mit der Abschnittsnummer. Weitere grundlegende Befehle finden Sie in der Liste und Übersicht der Linux-Befehle.

Verweisen Sie auf offizielle Dokumente