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

mfpqipee  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(151)

请注意,这个问题与How do I get cURL to not show the progress bar?明显不同,尽管这个问题的有效答案可能足以说明另一个问题。
我有一个脚本,它将cURL的stderr记录到一个文件中。我们将使用这个脚本作为示例:

curl -Lo /dev/null stackoverflow.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
0tdrvxhp

0tdrvxhp1#

如果没有更好的建议,我就将就一下:

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

x3naxklr2#

自curl 7.67.0(2019-11-06)以来,--no-progress-meter就实现了这一点,除此之外别无他法。

--no-progress-meter
         Option to switch off the progress meter output without muting or
         otherwise affecting warning and informational messages like  -s,
         --silent does.

         Note  that  this  is the negated option name documented. You can
         thus use --progress-meter to enable the progress meter again.

         See also -v, --verbose and -s, --silent. Added in 7.67.0.

因此,您可以用途:

curl -Lo /dev/null --no-progress-meter stackoverflow.com

如果成功,则不打印任何内容,如果失败,则打印错误。

相关问题