你不能像通过grep的进度信息;它没有任何意义。
curl
写入进度条到stderr,所以你要重定向到标准输出,然后才能用grep显示它:
$ 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 2009-07-15 17:07:06
Curl的输出是为了让人们阅读,而不是通过计算机 - 这就是为什么当grep输入时格式很糟糕。使用`wget --progress = dot`并计算点数可能会更好,但这也不是百分比。或者,也许你可以只计算卷标输出中的#。至少你会得到5-10%的准确度,或者是否有很多#适合终端,对吧? – 2009-07-15 17:12:46