このコマンドを実行すると、コンソールに出力が表示されます。ただし、出力が別のコマンドにパイプされている場合は機能しません。下記をご覧ください。
(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 ':[]'