stdinから読み込むと、less
行全体が読み込まれるまで出力は表示されません。
私は改行を印刷せずに行の進行状況を印刷するスクリプトを使用していますless
。
私の問題を示すいくつかのサンプルbashコードは次のとおりです。
while true ; do echo -n zzz ; sleep 1s ; done | less
収集した入力を強制的に表示するために押すことができるボタンはありますか、less
またはこのバッファリングを無効にするオプションはありますか?
答え1
これは不可能だと思います。
代わりに、入力をフィルタリングして改行を挿入できます。これは、改行位置を気にしない非常にシンプルなフィルタです。確かに改善できますが、少なくともほぼリアルタイムで出力を見ることができます。
perl -e '$| = 1; while (sysread STDIN, $_, 80) {print; /\n/ or print "\n"}
別のビューアに切り替えることもできます。 Emacsを使用しない場合、Emacsのシェルモードはヘビー級のソリューションです。*shell*
(次を使用して生成された)バッファからスクリプトを実行しますM-x shell
。他のインターフェイスに加えて、出力表示を含む、できるだけ少ない可能性があるすべてのタスクとより多くのタスクを実行できます。