8

Как отключить индикатор прогресса в cURL?

1

Я пытаюсь использовать cURL в скрипте и хочу сделать так, чтобы не отображалась полоса прогресса.

Я попробовал опции -s, -silent, -S и -quiet, но ничего из этого не сработало.

Вот типичная команда, которую я пробовал:

curl -s http://google.com > temp.html

Прогресс бар появляется только когда результаты перенаправляются в файл, то есть curl -s http://google.com не показывает полосы прогресса, но curl -s http://google.com > temp.html показывает.

4 ответ(ов)

7

Команда

curl -s http://google.com > temp.html

работает с версией curl 7.19.5 на Ubuntu 9.10 (без отображения индикатора прогресса). Однако, если по какой-либо причине это не работает на вашей платформе, вы всегда можете перенаправить stderr в /dev/null:

curl http://google.com 2>/dev/null > temp.html
0

Проблема, с которой вы столкнулись, связана с тем, как curl обрабатывает флаги -s и -S. Флаг -s (или --silent) отключает вывод прогресс-бара и сообщений об ошибках. Однако в вашей команде:

curl -s http://google.com > temp.html

прогресс-бар все равно может отображаться в некоторых версиях curl, так как этот флаг не полностью скрывает его в случае, если возникают ошибки.

Чтобы полностью отключить прогресс-бар и при этом получать сообщения об ошибках, вы можете использовать флаг -S вместе с -s:

curl -ss http://google.com > temp.html

При использовании -ss, curl не будет выводить прогресс-бар и при этом будет показывать сообщения об ошибках, если они возникнут. Это особенно полезно, если вам нужно видеть ошибки, но не отвлекаться на прогресс-бар.

Так что, если вы хотите скрыть прогресс-бар и получать сообщения об ошибках, используйте вариант с двумя -s как в приведенном вами примере.

0

Не уверен, почему это происходит. Попробуйте использовать -s вместе с опцией -o, чтобы указать файл вывода вместо >.

0

На macOS 10.13.6 (High Sierra) опция -sS действительно работает. Это особенно полезно внутри Perl, в команде вроде curl -sS --get {someURL}, что, если честно, намного проще, чем использование любых оберток вроде LWP или HTTP для простого получения содержимого веб-сайта или веб-страницы.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь