Ich versuche, einen Befehl zu finden, um nach einem Muster zu suchen, das Bindestriche in allen Manpages enthält.
Ich habe mir man mandiese 3 Optionen angesehen und gefunden:
-K,--global-aproposSuchen 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
--regexOption verwendet wird.
-w,--where,--path,--locationZeigen Sie die Handbuchseiten nicht an, sondern drucken Sie die Speicherorte der Quell-NRoff-Dateien, die formatiert werden sollen.
-S list,-s list,t--sections=listListe ist eine durch Doppelpunkte oder Kommas getrennte Liste von auftragsspezifischen manuellen Abschnitten, die durchsucht werden sollen. Diese Option überschreibt die
$MANSECTUmgebungsvariable. (Die-sSchreibweise dient der Kompatibilität mit System V.)
Ich habe versucht, sie zu kombinieren, um nach dem Muster zu suchen, bei dem mark-modified-lineses 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 bashfand ich die --regexOption, die wie folgt beschrieben wird:
--regexZeigen 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-linesdurch 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 bashManpage 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 x11perfcompenthält diese Zeile:
Mark Moraes wrote the original scripts to compare servers.
^^^^^^^
Und man xditviewenthä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?