您的腳本通過管道與較少的通信. Pipe是一個連接兩個端點的內存字節流:你的腳本和less程序,前者寫入輸出,后者從中讀取.
linux df命令?由于管道在內存中,如果它們隨意變大,就不會令人愉快.因此,默認情況下,在任何給定時刻,管道內部(寫入但尚未讀取)的數據都有限制.默認情況下,它在Linux上為64k.如果管道已滿,并且您的腳本嘗試向其寫入,則寫入塊.所以你的腳本實際上并沒有工作,它在執行write()調用時會在某個時刻停止.
怎么克服這個?調整默認值是一個糟糕的選擇;使用的是在讀取器中分配一個緩沖區,以便它讀入緩沖區,釋放管道,從而讓編寫程序工作,但只顯示(或處理)輸出的一部分. less有這樣的緩沖區,并且默認情況下會自動擴展它,但是它不會在后臺填充它,它只會在你讀取輸入時填充它.
vim自動換行,那么解決問題的方法是直到最后讀取文件(就像你通常按G一樣),然后回到開頭(就像你通常按g一樣).問題是您可以通過命令行指定這些命令,如下所示:
./script | less +Gg
linux grep。但是,您應該注意,您必須等到整個腳本的輸出加載到內存中,因此您將無法立即查看它.為此,不夠復雜.但如果這是你真正需要的(在./script仍在計算結束時瀏覽輸出的開頭),你可能想要使用一個臨時文件:
./script >x & less x ; rm x
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态