コマンド出力行数をリアルタイムで表示する方法は?

コマンド出力行数をリアルタイムで表示する方法は?

私はsvn exportこれをアプリケーションパッケージングスクリプトの一部として使用していますが、他のコマンドと同様に、このコマンドには進行状況バーがないようです。

今、2つのオプションがあります。

  • オプションなしで使用し、何千行もの印刷を見てください
  • 使用すると、--quiet完了するまで何も表示されません。

少なくともリアルタイムでコマンド出力行数を表示する方法はありますか?たとえば、

Exporting SVN directory ... 1234 files

そしてこの数字を見てください1234 リアルタイムデルタ?これを行うには、出力をコマンドにパイプすることを想像できますが、どのコマンドですか?

ベストアンサー1

yourcommand | { I=0; while read; do printf "$((++I))\r"; done; echo ""; }

または、括弧で囲まれた部分をシェルスクリプトに入れます。これは、シェルが実際に事前増分演算子(bash、ksh93、zshなど)をサポートしている場合にのみ機能します。それ以外の場合は増分して印刷する必要があります$I(図を参照I=$((I+1));printf...)。また、printfシェルの組み込み機能ではない場合(現在のbashの組み込み機能)、より良いパフォーマンスのために代わりに使用できecho -neますprint -n。改行文字を抑制して \r をエスケープ文字として解釈したいだけです。

おすすめ記事