pvがパイプに印刷されない

pvがパイプに印刷されない

このコマンドを実行すると、コンソールに出力が表示されます。ただし、出力が別のコマンドにパイプされている場合は機能しません。下記をご覧ください。

(pv -F $'%t %r %e\n' /dev/nvme0n1p1 | gzip -c >/run/test.img ) 
0:00:01 [25.2MiB/s] ETA 0:00:18
0:00:02 [23.7MiB/s] ETA 0:00:18
0:00:03 [ 100MiB/s] ETA 0:00:07
0:00:04 [ 199MiB/s] ETA 0:00:01

ここで、同じコマンド出力が別のコマンドにパイプされ、何も表示されないことを確認してください。 stderrをstdoutにリダイレクトし、 ":[]"文字を削除できるようにtr -dに渡しました。

(pv -F $'%t %r %e\n' /dev/nvme0n1p1 | gzip -c >/run/test.img ) 2>&1 | tr -d ':[]'

以下の同じコマンドを参照してください。ただし、stderrをstdoutにリダイレクトしません。また、上記と同じコマンドを使用してstderrをstdoutにリダイレクトしないと、目的の結果は得られません。下記をご覧ください。 tr - d 削除 次の内容文字 ":[]" は機能しません。 tr -d コマンドが完全に無視されることがわかります。

(pv -F $'%t %r %e\n' /dev/nvme0n1p1 | gzip -c >/run/test.img ) | tr -d ':[]'
0:00:01 [25.2MiB/s] ETA 0:00:18
0:00:02 [23.7MiB/s] ETA 0:00:18
0:00:03 [ 100MiB/s] ETA 0:00:07
0:00:04 [ 199MiB/s] ETA 0:00:01

私はこの問題を解決しようとして多くの時間を費やし、stackexchangeとすべてのフォーラムを検索しましたが、この問題を解決する方法がわかりません。

また、ファイル記述子2>&3を試してみましたが、まだ運がありません。

答え1

使用pv -f …

~からman 1 pv:

-f--force
強制出力。通常、pv標準エラーが端末でない場合、視覚的表示は出力されません。このオプションを使用すると強制的になります。

(pv -fF $'%t %r %e\n' /dev/nvme0n1p1 | gzip -c >/run/test.img ) 2>&1 | tr -d ':[]'

関連情報