Bashからコマンドに出力される行数を制限する方法は?

Bashからコマンドに出力される行数を制限する方法は?

以下を使用して、バックグラウンドで大容量ファイルのダウンロードを開始しました。

$ nohup wget http://example.tld/big.iso &

これも私にnohup.outインクルードを提供しますwget

今後ダウンロードプロセスを見たい場合できる使用します$ tail -f nohup.outが、必要なものよりも早く端末ウィンドウが埋められます。私が見たいのは、最後の行が継続的に更新されることです(単独でwget使用されている場合のように)。

試してみましたが、$ tail -n 1 -f nohup.out最初の尾にのみ影響を与えるようです。

一般的に言えば、この問題は、コマンド出力に使用可能/表示される行数を制限(この場合は1)できる場合は解決できます。出力を入れるのと似ています。循環バッファ- 一般的な進行状況バーが$ wget example.tld/big.iso印刷されると思います。

これに対する解決策はありますか?

それとも私が木に間違って登っているのでしょうか? (つまり、nohup出力を制限したり、他のタスクを実行する方が簡単ですか?)

ベストアンサー1

スクロール領域を制限したくない場合は(他の回答を参照)、次の行を印刷する前にキャリッジリターンを使用して行の先頭に戻ることもできます。行の残りの部分を消去するエスケープシーケンスがあります。これは、現在の行が前の行よりも短い場合に必要です。

nohup wget http://cdimage.debian.org/debian-cd/6.0.3/amd64/iso-dvd/debian-6.0.3-amd64-DVD-1.iso &
el="$(tput el)"; # Clear to the end of the line
tail -n 1 -f nohup.out | while read -r line; do echo -n $'\r'"$el$line"; done;

おすすめ記事