我最近想到了一个狡猾的技巧,其中涉及将PAGER
环境变量设置为rev
一个笑话。当我尝试阅读 rev 的手册页时,man rev
我看到了与预期相反的手册页。
如果您想在不设置寻呼机的情况下尝试此操作,您可以像这样使用该-P
选项:您将看到相反的手册页。man
man -P rev rev
rev
让我困惑的是,你不能简单地通过 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
...是等价的。