当我跑步时
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必须将curl stdout重定向到文件才能显示此消息。 “如果您想要 HTTP POST 或 PUT 请求的进度表,则需要使用 shell 重定向 (>)、--output 或类似方法将响应输出重定向到文件。”如果我跑
curl example.com 2> progress.txt
中没有数据progress.txt
。因此我需要运行
curl example.com > example.html 2> progress.txt
如何在不将curl stdout重定向到文件的情况下访问进度表?
答案1
如果您将数据传输到另一个程序,您将获得进度表。一个基本的
curl example.com | cat
有效,但如果结果较长,您将遇到文档中提到的问题:
它禁用进度表,否则会弄乱输出混合进度表和响应数据
为了避免这种情况,请使用sponge
(from更多实用程序,在大多数发行版中可用):
curl example.com | sponge