Как отключить индикатор прогресса в cURL?
Я пытаюсь использовать 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 ответ(ов)
Команда
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
Проблема, с которой вы столкнулись, связана с тем, как 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
как в приведенном вами примере.
Не уверен, почему это происходит. Попробуйте использовать -s
вместе с опцией -o
, чтобы указать файл вывода вместо >
.
На macOS 10.13.6 (High Sierra) опция -sS
действительно работает. Это особенно полезно внутри Perl, в команде вроде curl -sS --get {someURL}
, что, если честно, намного проще, чем использование любых оберток вроде LWP или HTTP для простого получения содержимого веб-сайта или веб-страницы.
Как запросить ввод Yes/No/Cancel в скрипте оболочки Linux?
Как работает "cat << EOF" в bash?
Ошибка "Слишком длинный список аргументов" для команд rm, cp, mv
Linux: Копирование и создание директории назначения, если она не существует
Прерывание скрипта оболочки при возвращении любой команды ненулевого значения