Pager

shell 如何決定何時呼叫尋呼機?

  • September 21, 2021

一些產生大輸出的 shell 命令,例如git diff,似乎在輸出太長時巧妙地拋出一個尋呼機,但如果它恰好很小,就不會這樣做。

這是如何運作的?每個單獨的程序是否都有自己的程式碼來測量其輸出並呼叫尋呼機?當它意識到輸出太長時,它不會已經將一些列印到標準輸出而無法取回嗎?或者這是一個通用的 shell 功能,即使沒有明確程式,任何程序都可以利用它?

需要明確的是:當然foo | less會強制尋呼機並且foo | cat不會強制尋呼機。我想知道是否有辦法讓任意foo行為表現為foo | pager_if_needed. 我也不是指從字面上實現pager_if_needed(可能可以在 2-3 行 bash 中完成)和做alias foo="foo | pager_if_needed"——因為這也不適用於bar,baz和其他所有內容。

shell 如何決定何時呼叫尋呼機?

它沒有。

每個單獨的程序是否都有自己的程式碼來測量其輸出並呼叫尋呼機?

是的。

當它意識到輸出太長時,它不會已經將一些列印到標準輸出而無法取回嗎?

很簡單:只有在檢查了輸出是否太長後才開始列印。

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