Wie kann man eine Manpage sichern?

45

Wie kann ich eine Manpage "cat", als würde ich eine Datei "cat", um nur einen Speicherauszug des Inhalts zu erhalten?

LanceBaynes
quelle

Antworten:

40

Erstens sind die man-Dateien normalerweise nur gezipte Textdateien, die sich irgendwo in Ihrem Dateisystem befinden. Da Ihre Laufleistung davon abhängt, sie zu finden, und Sie wahrscheinlich die verarbeitete und formatierte Version möchten, die Ihnen der Mensch anstelle der Quelle gibt, können Sie sie einfach mit dem manTool ausgeben . Beim Betrachten von sehe man manich, dass Sie das Programm ändern können, das zum Anzeigen von Manpages mit der -PMarkierung wie folgt verwendet wird:

man -P cat command_name

Es ist auch nichts wert, das manautomatisch erkennt, wenn Sie die Ausgabe weiterleiten, anstatt sie auf dem Bildschirm anzuzeigen. Wenn Sie sie also mit etwas anderem verarbeiten möchten, können Sie direkt zu diesem Schritt übergehen:

man command_name | grep search_string

oder um eine Datei zu sichern:

man command_name > formatted_man_page.txt
Caleb
quelle
1
Mit -P wird die Ausgabedatei nicht sauber lesbar. Es ist mit allen Strg-H-Zeichen gekritzelt. Früher habe ich man cmd> gemacht! man.cmd und öffne man.cmd und mache '% s / ^ H .// g', um die nervigen Steuerzeichen für fett und kursiv zu entfernen. Dies hat aber immer noch ein Problem, wenn es andere Sonderzeichen gibt. Ich bin immer noch auf der Suche nach einer guten Methode, um eine manuelle Bearbeitung der Ausgabe zu vermeiden.
Chan Kim
@ChanKim Sie tun etwas falsch oder haben eine nicht standardmäßige Konfiguration, die Ihnen im Weg steht, da beide Methoden in der Tat eine saubere Ausgabe erzeugen, die im Klartext ohne zusätzliche Steuerzeichen formatiert ist. Sind Sie sicher, dass Sie sich nicht manauf etwas oder Flaggen geeinigt haben, die in Ihrer Shell aufgezwungen werden und Ihre normale Funktion von trennen man?
Caleb
1
@Caleb, ich bestätige das OP-Problem. CentOS Release 6.7 (Final), / usr / bin / man gcc> j, editiere 'j', alle Strg-Hs sind drin. Die beste Antwort, die ich gefunden habe, ist auf commandlinefu.com/commands/view/2417/…
Charles Roth
1
man command_name > formatted_man_page.txtwird ein doppeltes Wort verursachen.
Zigii Wong
52

So rufen Sie eine ASCII-Manpage-Datei ab, ohne die lästigen Backspace- / Unterstreichungsversuche und die seltsamen Abfolgen von Fettdruck:

man ksh | col -b > ksh.txt
Bruce Ediger
quelle
6
Sie verdienen mehr Stimmen
Labo
2
Hallo, warum enthält man piped output doppelte Zeichen? und wie hat col -b sein entfernt? Danke im Voraus.
Saurabheights
2
@saurabheights - man versucht, Unterstreichungen und fetten Text und möglicherweise einige andere Dinge mit Leerzeichen, doppelten Zeichen, Escape-Sequenzen usw. zu machen als Text auf einem Terminal. Ich habe col source nicht gelesen, aber es untersucht wahrscheinlich nur stdin byte byte und übergibt keine Backspaces usw. an stdout. Die Manpage von col liest sich so, als hätte jemand sie speziell geschrieben, um die Ausgabe von man zu filtern.
Bruce Ediger
1
ok das macht sinn Solche (versteckten) Zeichen können zu doppelten Zeichen führen. Vielen Dank, Bruce.
Saurabheights
Du verdienst wirklich wirklich Mode Upvotes. Bedeutet "col" für Spalte?
Algebra
24

Manpages sind in der Regel troffvorverarbeitete Dateien, und Sie können mit

groff -t -e -mandoc -Tascii manpage.1 | col -bx > manpage.txt

groffist ein Wrapper für troff.

Mehr Infos hier .

Möglicherweise müssen Sie gzip verwenden, um die Manpage-Dateien zuerst zu dekomprimieren, und die Ausgabe enthält weiterhin zahlreiche Formatierungsinformationen.

EightBitTony
quelle
4
+1 für die
Diskussion
11

Ich mache das die ganze Zeit. Diese Kommandozeile freut mich:

man man | col -bx > man.txt

col -b entfernt Leerzeichen.

col -bx ersetzt auch Tabulatoren durch Leerzeichen, was meine starke Präferenz ist.

Wenn ich möchte, dass der Text während des Lesens in einer Breite formatiert wird, die meiner Präferenz entspricht, ändere ich den Befehl in folgenden:

MANWIDTH=10000 man man | col -bx > man.txt
sotosoc
quelle
man man | col -bx > man.txtarbeitete für mich. Danke.
JaredH
6

Verwenden manSie einfach den Befehl - Sie können die Ausgabe wie bei cateiner Datei in andere Dinge umleiten.

TomH
quelle
1
Ich mag die Einfachheit.
Joel Sjögren
3

Wenn Sie nur cateine Hilfeseite erstellen möchten , können Sie sie einfach weiterleiten an cat:

man ls | cat

Wenn Sie den Inhalt in eine Datei kopieren möchten:

man ls > ls_manpage_dump.txt
Sheharyar
quelle