サンプルコマンドの使用
man apropos > outputfile
書式設定されたman
ページを含むテキストファイルを作成しますapropos
(man apropos
太字などの画面に直接印刷するのとは若干の違いがあります)。
しかし、生成された出力ファイルの最大行幅を手動で設定して、すべての段落がその幅に一致するようにしたいと思います。
man
ページは次のように生成されます。たとえば、元のソーステキストファイルの1つの段落を前に配置しようとしましたが、groff
複数のページで作業する必要がある場合は、これは簡単ではありません。また、一部の文字は認識されません。.ll 50
.gz
man
man
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文字に置き換えます)。
つまり、値をオーバーライドしますCOLUMNS
。ioctl
ウィンドウサイズが変更されるたびにその値が動的に更新されるため、変更に依存したくありませんCOLUMNS
(ここでは機能しますが)。
上書きを使用すると、シェルMANWIDTH
起動ファイルに行を追加してCOLUMNS
変更を永続的に適用することもできます。export MANWIDTH=60