Как мне заставить CURL не показывать индикатор выполнения?

564

Я пытаюсь использовать cURL в скрипте и заставить его не показывать индикатор выполнения.

Я попробовал -s,-silent , -S, и -quietварианты, но ни один из них не работает.

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

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

Я только получаю индикатор выполнения, когда помещаю его в файл, поэтому curl -s http://google.comу меня нет индикатора выполнения, но curl -s http://google.com > temp.htmlон есть.

adammenges
источник
12
curl -s http://google.comмолчит для меня здесь На какой версии curl и Linux вы работаете?
Адриан Петреску
-s отлично работает для меня в curl 7.21.0 (i686-pc-linux-gnu) libcurl / 7.21.0 OpenSSL / 0.9.8o zlib / 1.2.3.4 libidn / 1.18 и curl 7.19.5 (i386-apple-darwin9. 7.0) libcurl / 7.19.5 zlib / 1.2.3 выглядит так, как будто вам нужно обновить свой curl
derevo
Я пробовал это на Fedora 15 и Mac OSX 10.7.1. Кроме того, я получаю индикатор выполнения только при нажатии на файл, поэтому curl -s google.com не имеет индикатора выполнения, а curl -s google.com > temp.html делает.
adammenges
1
Для тех, кто хочет выяснить версию установленной curlи libcurlиспользовать командуdpkg -l | grep curl
Dimitry K
1
В таком случае запустите man curlдля показа справочной страницы curl, затем нажмите /progressили /hide progressили stopили что-нибудь еще для поискового запроса, чтобы получить то, что вы хотите. Тогда вы можете найти ответ, подобный предложенному chmac.
кендзю

Ответы:

563
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
unutbu
источник
31
Я должен был подумать об этом. Это также будет скрывать сообщения об ошибках.
Том Зыч
1
В моем случае это нормально использовать / dev / null.
adammenges
Хорошо - это прекрасно работает. У меня была проблема на CentOS 6.3, но не на других дистрибутивах - причудливый, но простой и легкий обходной путь - спасибо!
Росс
Кстати, смотрите ссылку ниже, 2>/dev/nullесли вы не знаете: stackoverflow.com/questions/10508843/what-is-dev-null-21
кендзю
Согласно справочной странице по установке curl на хосте Ubuntu 14, -sзаставит curl не показывать «индикатор выполнения или сообщения об ошибках ». (Я не пробовал тестировать или читать исходный код, чтобы проверить, правда ли это.)
David Winiecki
535

В curl версии 7.22.0 в Ubuntu и 7.24.0 в OSX решение не для отображения прогресса, а для отображения ошибок заключается в использовании обоих -s( --silent) и -S( --show-error) следующим образом:

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

Это работает как для перенаправленного вывода > /some/file, для конвейерного вывода, так | lessи для вывода непосредственно на терминал для меня.

chmac
источник
3
Для моего 7.35 использование -sS исключает индикатор прогресса, но ТАКЖЕ устраняет информацию, обычно записываемую в stdout - что мне нужно, поскольку она включает имя файла, записанное на диск, вместо (другого) fileid, который должен использоваться в запросе. Кажется, нет способа просто победить индикатор прогресса в одиночку!
Джек
48

Я обнаружил, что в curl 7.18.2 индикатор загрузки не скрывается:

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

но это с:

curl -ss http://google.com > temp.html
Билл Хили
источник
6

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

Том Зыч
источник
0

В MacOS 10.13.6 (High Sierra) работает опция '-ss'. Это особенно полезно внутри perl, в такой команде curl -ss --get {someURL}, которая, откровенно говоря, намного проще, чем любая из оболочек LWP или HTTP, просто для получения содержимого сайта или веб-страницы.

RLynch59
источник
-1

Некоторое время назад написал простой скрипт для проверки, например, поиска определенных версий jdk:

#!/bin/bash
REPO_TAG_URL=$1

SEARCH=`curl -s $REPO_TAG_URL`
NEXT_PAGE=`echo $SEARCH | jq -r .next`

echo $SEARCH | jq '.results[].name'

while [[ $NEXT_PAGE != 'null' ]]; do
    SEARCH=`curl -s $NEXT_PAGE`
    NEXT_PAGE=`echo $SEARCH | jq -r .next`
    echo $SEARCH | jq '.results[].name'
done

echo "Thats all folks"

Вы используете это так: ./script.sh https://registry.hub.docker.com/v2/repositories/library/tomcat/tags/

Даниэль Хайдук
источник