カール標準出力をファイルにリダイレクトせずにHTTPリクエストのカールプログレスメータを取得するには?

カール標準出力をファイルにリダイレクトせずにHTTPリクエストのカールプログレスメータを取得するには?

私が走るとき

curl example.com > example.html

端末で私が取得する進行状況インジケータは次のとおりです。

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  1256  100  1256    0     0   1950      0 --:--:-- --:--:-- --:--:--  1947
100  1256  100  1256    0     0   1950      0 --:--:-- --:--:-- --:--:--  1947

~によるとhttps://curl.se/docs/manpage.htmlこのメッセージが表示されるには、カールstdoutをファイルにリダイレクトする必要があります。 「HTTP POST または PUT 要求のプログレスメーターを希望する場合は、シェルリダイレクト (>)、--output などの機能を使用して応答出力をファイルにリダイレクトする必要があります。」

curl example.com 2> progress.txt

にデータはありませんprogress.txt。だから私は走らなければならない

curl example.com > example.html 2> progress.txt

カール標準出力をファイルにリダイレクトせずに進行状況インジケータにアクセスするには?

答え1

データを別のプログラムに転送すると、進行状況インジケータが表示されます。基本

curl example.com | cat

動作しますが、結果が長くなると、ドキュメントに記載されている問題が発生します。

それ障害を負うプログレスメーター、そうでなければ出力ミキシングプログレスメーターと応答データが混乱します。

これを防ぐにはsponge(fromその他のユーティリティ、ほとんどのディストリビューションで利用可能):

curl example.com | sponge

関連情報