Ich versuche, einen Befehl zu finden, um nach einem Muster zu suchen, das Bindestriche in allen Manpages enthält.
Ich habe mir man man
diese 3 Optionen angesehen und gefunden:
-K
,--global-apropos
Suchen Sie auf allen Handbuchseiten nach Text. Dies ist eine Brute-Force-Suche, die wahrscheinlich einige Zeit in Anspruch nehmen wird. Wenn Sie können, sollten Sie einen Abschnitt angeben, um die Anzahl der zu durchsuchenden Seiten zu verringern. Suchbegriffe können einfache Zeichenfolgen (Standardeinstellung) oder reguläre Ausdrücke sein, wenn die
--regex
Option verwendet wird.
-w
,--where
,--path
,--location
Zeigen Sie die Handbuchseiten nicht an, sondern drucken Sie die Speicherorte der Quell-NRoff-Dateien, die formatiert werden sollen.
-S list
,-s list
,t--sections=list
Liste ist eine durch Doppelpunkte oder Kommas getrennte Liste von auftragsspezifischen manuellen Abschnitten, die durchsucht werden sollen. Diese Option überschreibt die
$MANSECT
Umgebungsvariable. (Die-s
Schreibweise dient der Kompatibilität mit System V.)
Ich habe versucht, sie zu kombinieren, um nach dem Muster zu suchen, bei dem mark-modified-lines
es sich um eine Readline-Option handelt, die beschrieben wird in man bash
:
$ man -s1 -Kw mark-modified-lines
Aber es findet keine Seite:
No manual entry for mark-modified-lines
Und der Befehl wird mit dem Code beendet 16
.
Ich dachte, dass die Syntax des Befehls möglicherweise falsch war, aber es scheint nicht so, da dieser Befehl die 5 Manpages auf meinem System korrekt findet, die das Wort enthalten guitar
:
$ man -s1 -Kw guitar
/usr/share/man/man1/ffmpeg-all.1.gz
/usr/share/man/man1/ffserver-all.1.gz
/usr/share/man/man1/ffplay-all.1.gz
/usr/share/man/man1/ffmpeg-filters.1.gz
/usr/share/man/man1/ffprobe-all.1.gz
Ich dachte, dass vielleicht die Bindestriche im Wort ein Problem verursachen. In man bash
fand ich die --regex
Option, die wie folgt beschrieben wird:
--regex
Zeigen Sie alle Seiten mit einem Teil ihres Namens oder ihrer Beschreibung, die mit jedem Seitenargument übereinstimmen, als regulären Ausdruck an, wie bei
apropos(1)
. Da es normalerweise keine vernünftige Möglichkeit gibt, bei der Suche nach einem regulären Ausdruck eine "beste" Seite auszuwählen, impliziert diese Option-a
.
Ich habe versucht, diese Option zu verwenden und das Wort mark-modified-lines
durch den regulären Ausdruck zu ersetzen mark.modified.lines
, wobei die Bindestriche selbst durch das Metazeichen ersetzt werden, .
das mit einem beliebigen Zeichen übereinstimmen sollte:
$ man -s1 -Kw --regex 'mark.modified.lines'
Es wird immer noch keine Seite gedruckt, obwohl ich weiß, dass der Text in der bash
Manpage geschrieben ist.
Das Metazeichen .
in der Regex scheint wie erwartet analysiert zu werden, da dieser Befehl:
$ man -s1 -Kw --regex 'mark.mo'
Drucke:
/usr/share/man/man1/x11perfcomp.1.gz
/usr/share/man/man1/xditview.1.gz
Und diese beiden Manpages ( x11perfcomp
, xditview
) werden beide vom regulären Ausdruck abgeglichen mark.mo
. Genauer gesagt man x11perfcomp
enthält diese Zeile:
Mark Moraes wrote the original scripts to compare servers.
^^^^^^^
Und man xditview
enthält diese Zeile:
Mark Moraes (University of Toronto)
^^^^^^^
Allerdings man -s1 -Kw --regex 'mark.mo'
druckt nicht die bash man - Seite:
/usr/share/man/man1/bash.1.gz
Während ich es erwartet hatte, da es diese Zeile enthält:
mark-modified-lines (Off)
^^^^^^^
Ist es möglich, in den Manpages nach einem Muster mit Bindestrichen zu suchen?