manページをダンプする方法は?


45

内容のダンプだけを取得するためにファイルを「cat」するように、manページを「cat」するにはどうすればよいですか?

回答:


40

まず、manファイルは通常、ファイルシステムのどこかにgzip圧縮されたテキストファイルです。あなたの走行距離はそれらを見つけるのにばらつきがあり、おそらくあなたがソースの代わりに男性があなたに与える処理されフォーマットされたバージョンが欲しかったので、あなたはmanツールでそれらをダンプすることができます。を見るとman man、次の-Pようなフラグを使用して、manページの表示に使用するプログラムを変更できることがわかります。

man -P cat command_name

またman、画面上に表示するのではなく、出力をパイプするときに自動的に検出することは何の価値もありません。

man command_name | grep search_string

または、ファイルにダンプするには:

man command_name > formatted_man_page.txt

1
-Pを使用しても、出力ファイルは見やすくなりません。すべてのctrl-H文字で落書きされています。以前はman cmdをしていました>!man.cmdを開き、man.cmdを開いて '%s / ^ H .// g'を実行し、太字と斜体を表すための迷惑な制御文字を削除します。しかし、他の特殊文字がある場合、これにはまだいくつかの問題があります。私はまだ、出力の手動編集を避けるための良い方法を探しています。
チャン・キム

@ChanKimここでの方法はどちらも、実際には余分な制御文字なしでプレーンテキストでフォーマットされたクリーンな出力を生成するため、何か間違ったことをしているか、何らかの非標準の設定が邪魔をしています。manの通常の機能からあなたを分離しているシェルで強制された何かまたはフラグにエイリアスを付けていないのmanですか?
カレブ

1
@カレブ、私はOPの問題を確認します。CentOSリリース6.7(最終版)、/ usr / bin / man gcc> j、「j」の編集、すべてのctrl-Hがそこにあります。私が見つけた最良の答えはcommandlinefu.com/commands/view/2417/にあり
チャールズロス

1
man command_name > formatted_man_page.txtいくつかの単語の重複が発生します。
ジギィウォン

52

迷惑なバックスペース/アンダースコアで下線を引こうとせずに ASCIIのマニュアルページファイルを取得し、太字にするための奇妙なシーケンスを作成するには:

man ksh | col -b > ksh.txt

6
あなたはより多くの賛成に値する
ラボ

2
こんにちは、man pipedの出力に重複文字が含まれているのはなぜですか?そして、col -bはどのように削除しましたか?前もって感謝します。
saurabheights

2
@saurabheights-男は下線や太字のテキスト、バックスペース、重複文字、エスケープシーケンスなどを使用して他のことをしようとする端末上のテキストとして。私はcolソースを読んでいませんが、おそらくstdinをバイトごとに調べ、バックスペースなどをstdoutに渡しません。colのmanページは、man出力をフィルタリングするために作成されたように書かれています。
ブルースエディガー

1
わかりました、それは理にかなっています。そのような文字(非表示)は、文字の重複を引き起こす可能性があります。ブルースありがとう。
saurabheights

あなたは本当にモードの賛成に値する。列に「col」はありますか?
代数

24

マニュアルページは通常、troff前処理されたファイルであり、プレーンテキストを取得するには、

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

groffはのラッパーですtroff

詳細はこちら

最初にgzipを使用してマニュアルページファイルを解凍する必要がある場合がありますが、出力にはまだ多くのフォーマット情報があります。


4
groff / troffとmanページのフォーマットについて話すための+1
lgeorget 14年

11

私はこれをいつもしています。このコマンドラインは私を幸せにします:

man man | col -bx > man.txt

col -bはバックスペースを削除します。

col -bxは、タブをスペースに置き換えます。これは私の好みです。

読みながらテキストを好みの幅にフォーマットする場合、コマンドを次のように変更します。

MANWIDTH=10000 man man | col -bx > man.txt

man man | col -bx > man.txt私のために働いた。ありがとうございました。
JaredH

6

manコマンドを使用するだけです- catファイルの場合と同じように、出力を他のものにパイプできます。


1
私はシンプルさが好きです。
ジョエルシェーグレン

3

cat単にマンページにしたい場合は、単にそれをcat次のようにパイプすることができます。

man ls | cat

その内容をファイルにダンプする場合:

man ls > ls_manpage_dump.txt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.