Bash
為什麼在再次通過 rev 管道時使用 rev 作為您的手冊頁失敗?
我最近想到了一個狡猾的技巧,將環境
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
……等價的。