Bash

為什麼在再次通過 rev 管道時使用 rev 作為您的手冊頁失敗?

  • July 16, 2015

我最近想到了一個狡猾的技巧,將環境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。

這是因為man除非將輸出發送到終端,否則不使用尋呼機。如果輸出被發送到管道,它只會cat在那裡輸出。所以…

man rev | rev | rev

…和…

man -Prev rev | rev | rev

……等價的。

引用自:https://unix.stackexchange.com/questions/216537