あなたはgrepを通過ような進捗情報を取得することはできません。それは意味をなさない。あなたは、あなたがそれをgrepすることができます前に、stdoutにリダイレクトする必要がありますので
curl
は、標準エラー出力にプログレスバーを書き込み:中
$ curl -# -o f1.flv 'http://osr.com/f1.flv' 2>&1 | grep 1 | less
結果:あなたはあなたの番号の継続的な流れを
^M 0.0
%^M######################################################################## 100.
0%^M######################################################################## 100
.0%^M######################################################################## 10
0.0%
を期待しています他のどこかにリダイレクトしていますか?または、あなたは一点で数字をつかむことを期待していますか?
それは小さなファイル上半assedly作品の元、この種だ場合:
$ curl -# -o f1.flv 'http://osr.com/f1.flv' 2>&1 | sed 's/#//g' -
100.0% 0.0%
しかし、それは大きなファイルに役に立たないのです。おそらくcurlが^ Hを端末に送信しているように見えるので、ダウンロードが完了するまで、出力は印刷されません。 sed
には良い方法があるかもしれませんが、私は息を止めません。
$ curl -# -o l.tbz 'ftp://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/2009/06/2009-06-02-05-mozilla-1.9.1/firefox-3.5pre.en-US.linux-x86_64.tar.bz2' 2>&1 | sed 's/#//g' -
100.0%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ああ、実際に見ることができるように出力をリダイレクトしています。私はちょうどあなたが言ったように(前者)数字を抽出することを望んでいた。私は上記を試しましたが、100%に達すると出力を得るだけです - 進捗の変化を実際に見るにはもっと大きなファイルが必要でしょうか? – Abs
Curlの出力は、コンピュータではなく、人間が読むことを目的としています。その理由は、grepが取り込んだときにフォーマットが嫌な理由です。 'wget --progress = dot'を使ってドットを数えればよいかもしれませんが、それでもパーセンテージではありません。あるいは、カールの出力で#を数えることができます。少なくとも、あなたは5〜10%の精度を得るでしょうが、ターミナルには多くの適合があります。 –
あなたは正しいです、おそらくハッシュを数えて幸運。これは私のホストによって何らかの理由でブロックされているので、私はwgetを使うことができません。私が以前に尋ねた質問では、wgetを使用できない場合、CURLが次善策であるというコンセンサスがありました。他のオプションのどれにも進捗状況を簡単に解析できる方法を追加する必要があります! – Abs