2012-02-20 30 views
2

更多地使用該命令是很常見的。通常使用更多的管道。所以我認爲更多的是有能力從標準輸入讀取。每個由pipe分隔的命令都是一個進程,而前一個命令只是創建pipe和dup2寫入管道到更多的stdin。但我發現如果我在控制檯中輸入「more」,只會出現一些用法。那麼這是怎麼回事?可以命令從標準輸入讀更多?

回答

2

爲什麼你認爲什麼是錯的?爲終端輸出更多的頁面,那麼等待足夠的輸入頁面的標準輸入是什麼意思?

如果您鍵入more和一個或多個文件名,它將頁面輸入。所以行爲是一樣的東西:

am I attached to a terminal? ("isatty") 
    are there filenames in argv 
     page files 
    else 
     display help 
else 
    page pipe input 
2

這是一個功能。它檢測到其標準輸入連接到終端,並顯示幫助信息而不是繼續。幾乎沒有什麼情況可以在您手動輸入時在輸入上運行尋呼機。如果你確實想要,例如嘗試cat | more

2

對於什麼是值得的,我看着由庫在我的Linux發行版提供的源碼包,發現這個:

if (!no_intty && nfiles == 0) { 
usage(argv[0]); 
exit(1); 
} 

所以確實行爲是顯示如果沒有檢測到輸入,則使用消息。