Bashは「対話型」出力を特殊ファイルにリダイレクトします。

Bashは「対話型」出力を特殊ファイルにリダイレクトします。

pvたとえば、出力、つまり進行状況バーをにリダイレクトしたいと思います/dev/tty1

 ...  | pv -perts 100G |  ... 2> /dev/tty1

しかし、私が得ることは、進行状況バーが更新されるたびに、前の状態が上記の行に残っている間に新しい行で更新されることです。

更新する方法はありますか?私は聞いたことがありますが、col出力が完了した後に印刷することがわかりましたが、もちろん視覚的に進行状況を追跡するのには適していません。

答え1

私はttyとptyが同じように動作すると仮定します。今は後者にのみアクセスできます。

この試み...

... | pv --force -perts 100G 2> /dev/tty1 | ...

/dev/tty1私のテストでは、他の端末で実行しても、関連端末で進行状況バーが正常にレンダリングされます。

--force(マンページにも標準エラーが端末を指していない場合にのみ必要だと示されていることを付け加える必要がありますpv。私は擬似端末を使用しているので、両方の端末が同じではないと思うかもしれません。 なしで動作するならば、それをオフにしてください。)


例が実行されます...

cat file_250M | pv --force -perts 250M 2> /dev/pty7 | wc

「ローカル」端末:

0       0 262144000

/dev/pty7ターミナル(単一変更ライン):

0:00:06 [36.7MiB/s] [======================================================================>] 100%

関連情報