固定幅でマニュアルページを印刷する

固定幅でマニュアルページを印刷する

サンプルコマンドの使用

man apropos > outputfile

書式設定されたmanページを含むテキストファイルを作成しますaproposman apropos太字などの画面に直接印刷するのとは若干の違いがあります)。

しかし、生成された出力ファイルの最大行幅を手動で設定して、すべての段落がその幅に一致するようにしたいと思います。

manページは次のように生成されます。たとえば、元のソーステキストファイルの1つの段落を前に配置しようとしましたが、groff複数のページで作業する必要がある場合は、これは簡単ではありません。また、一部の文字は認識されません。.ll 50.gz manman

apropos.1:45: warning: can't find character with input code 195
apropos.1:45: warning: can't find character with input code 168
apropos.1:47: warning: can't find character with input code 178
apropos.1:131: warning: can't find character with input code 169

だから、もっと直接的な方法があるのだろうか。作成中に最大線幅を変更する方法はoutputfile?特別注文がありますか?


編集する:

(以下の注意事項はすべてUbuntu 18.04に関するものです。上記の質問の14.04を含む以前のバージョンではテストできません。)

1行の一時的なソリューションの場合、カスタムMANWIDTH値としてエクスポートされていない場合、2つの間に違いはありません。

$ MANWIDTH=60 man apropos > outputfile

そして

$ COLUMNS=60 man apropos > outputfile

MANWIDTHしかし、原則として、初めて使用する方が良いです。


編集2(質問と厳密には関係ありません):

代わりに、マニュアルページの印刷に永続的な幅設定を適用するには、次のものが必要です。出口変数の推定値です。そして:

$ export MANWIDTH=60
# zero or more additional lines
$ man apropos > outputfile

man apropos端末ウィンドウのサイズ変更方法に関係なく、同じ幅で印刷されます。代わりに、

$ export COLUMNS=60
# zero or more additional lines
$ man apropos > outputfile

ターミナルウィンドウのサイズがexportとの間で調整されていない場合にのみ、以前と同じ結果を提供しますman <page> > outputfile

ベストアンサー1

MANWIDTH環境変数を使用してください。

MANWIDTH=60 man apropos > apropos.txt

man 2.7.4のマンページには次のように記載されています。

$ MANWIDTHが設定されている場合、その値はマニュアルページをフォーマットする必要がある行の長さとして使用されます。設定しないと、マニュアルページは現在の端末に適した行長にフォーマットされます(使用可能な場合は$ COLUMNS、ioctl(2)値を使用し、両方が使用できない場合は80文字に置き換えます)。

つまり、値をオーバーライドしますCOLUMNSioctlウィンドウサイズが変更されるたびにその値が動的に更新されるため、変更に依存したくありませんCOLUMNS(ここでは機能しますが)。

上書きを使用すると、シェルMANWIDTH起動ファイルに行を追加してCOLUMNS変更を永続的に適用することもできます。export MANWIDTH=60

おすすめ記事