tee
コンテンツをstdout
ファイルからファイルに別々にパイプしたいstderr
(実際にファイルに追加> >(tee -a $filename)
)。しかし、ファイルに添付されているものを見るのではなく、本物パイプラインコンテンツに基づく進行状況インジケータ。これまで、各チャンネルの出力に含まれる行数や文字数などです。
注:強調する理由本物以上?私はバックグラウンドでサブシェルを介して回転バトンを取得し、PIDを保存して殺す方法を知っているからです。それは感動的な内容ですが、実際に何が起こっているのかについての兆候はありません。つまり、ヘビ油です。
注:出力ファイルは最初に存在しない可能性があるため、サブシェルを持つソリューションはこれを考慮する必要があります。
答え1
my-program > >(pv -trabcN stdout > stdout) 2> >(pv -trabcN stderr > stderr)
次の進行状況を提供します。
stderr: 123MiB 0:00:03 [42.6MiB/s] [41.1MiB/s]
stdout: 138MiB 0:00:03 [54.2MiB/s] [46.2MiB/s]
(現在(-r
)および平均(-a
)速度は比較的新しいものなので、-a
使用しているバージョンになければ無視しても構いません。)pv
答え2
tailコマンドに-f(永久に)オプションが役に立ちます。
ファイルの各行に点を表示します。
tail -f bk2ud.log | awk '{printf(".");}'
しかし、必要に応じてより複雑なものが必要な場合もあります。