revを再パイピングすると、revをマニュアルページとして使用するプログラムが失敗するのはなぜですか?

revを再パイピングすると、revをマニュアルページとして使用するプログラムが失敗するのはなぜですか?

PAGER私は最近、環境変数をrev冗談に設定する狡猾なトリックを思いつきました。 revのマニュアルページを読もうとすると、予想していたものとman rev反対の内容が見えます。

ポケットベルを設定せずにこれを試すには、-P次のオプションを使用できます。代わりにマニュアルページが表示されます。manman -P rev revrev

私を混乱させるのは、単にrev出力をパイプして再度正しく作成できないことです。実行しようとしましたが、man -P rev rev | rev出力が正しい方法で出ておらず、まだ逆です。

次のように、正しい方法でエラーメッセージが表示されます。

mdoc warning: A .Bl directive has no matching .El (#58)

stderr代わりに渡されるので、これが正しい方向だと思います。stdout

revを再パイプすると、すべてのテキスト、エラーメッセージなどが正しい方向になります。

man -P rev rev | rev | rev

この奇妙な行動の理由は何ですか?

Ubuntuのgnome端末でbashを使用しています。

ベストアンサー1

manこれは、出力が端末に送信されないとポケットベルが使用されないためです。出力がパイプに送信される場合は、catパイプの出力にすぎません。だから...

man rev | rev | rev

...そして...

man -Prev rev | rev | rev

...同等です。

おすすめ記事