Cat

“cat”和“less”之間的標準輸入行為

  • January 8, 2015

當我發出cat時,終端掛起等待標準輸入。但是,當less發佈時,我得到Missing filename ("less --help" for help). 眾所周知,兩者都less接受cat標準輸入。有什麼不同?這如何反映在手冊頁中?

less當沒有給出任何文件名參數時執行以下程式碼:

if (isatty(fd0))
{
   error("Missing filename (\"less --help\" for help)", NULL_PARG);
   quit(QUIT_OK);
}
return (edit("-"));

當標準輸入是終端時,它會抱怨。如果標準輸入是一個普通的文件或管道,就可以了。

它可能這樣做是因為它需要在每頁末尾讀取來自終端的響應,並且無法區分正在分頁的數據和響應。

手冊頁中沒有提到這一點。也許應該是。

cat不分頁其輸出,也不讀取來自終端的響應。就 stdin 作為終端而言,它沒有任何限制。

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