如何让 cURL 不显示进度条但仍提供统计信息?

Posted

技术标签:

【中文标题】如何让 cURL 不显示进度条但仍提供统计信息?【英文标题】:How do I get cURL to not show the progress bar but still give statistics? 【发布时间】:2019-05-01 20:05:44 【问题描述】:

请注意,此问题与 How do I get cURL to not show the progress bar? 明显不同,尽管此问题的有效答案可能足以满足 this comment 的其他问题。

我有一个脚本将 cURL 的 stderr 记录到文件中。我们将以此为例:

curl -Lo /dev/null ***.com 2>/tmp/foo

当我检查那个文件时,它看起来像这样:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
^M  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0^M100   143  100   143    0     0   1190      0 --:--:-- --:--:-- --:--:--  1191
^M 97  244k   97  239k    0     0   688k      0 --:--:-- --:--:-- --:--:--  688k^M100  244k  100  244k    0     0   701k      0 --:--:-- --:--:-- --:--:-- 4974k

这对我来说完全是垃圾。我想要没有动画进度条统计数据。我可以用一些标准的 unix 工具来解析它。但是,我在想也许一些参数和/或 termcap/terminfo 的组合也可以工作。

请指教。


这个简单的后期处理可以工作,因为它不是动画:

head -n2 /tmp/foo; tail -n1 /tmp/foo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  245k  100  245k    0     0   393k      0 --:--:-- --:--:-- --:--:--  393k

【问题讨论】:

我推荐the -w option在传输后提取信息。 【参考方案1】:

如果我没有得到更好的建议,我会接受这个:

$ curl -Lo /dev/null --stderr >(awk 'END print "Downloaded", $2, "of", $4, "at", $7"bps"' >/tmp/foo) ***.com
$ cat /tmp/foo
Downloaded 245k of 245k at 472kbps

【讨论】:

以上是关于如何让 cURL 不显示进度条但仍提供统计信息?的主要内容,如果未能解决你的问题,请参考以下文章

为啥css的overflow不显示滚动条

curl使用总结

curl使用总结

如何让ScrollView 的滚动条不显示

web自动化的利器 -- cURL

css隐藏div滚动条