Jak sprawić, by CURL nie wyświetlał paska postępu?

562

Próbuję użyć cURL w skrypcie i sprawić, aby nie wyświetlał paska postępu.

Wcześniej próbowałem -s, -silent, -S, i -quietopcje, ale żaden z nich nie działa.

Oto typowe polecenie, które próbowałem:

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

Pasek postępu pojawia się tylko po wypchnięciu go do pliku, więc curl -s http://google.comnie ma paska postępu, ale curl -s http://google.com > temp.htmlma.

adammenges
źródło
12
curl -s http://google.commilczy tu dla mnie. W której wersji curl i Linux korzystasz?
Adrian Petrescu,
-s działa dobrze dla mnie w curl 7.21.0 (i686-pc-linux-gnu) libcurl / 7.21.0 OpenSSL / 0.9.8o zlib / 1.2.3.4 libidn / 1.18 i curl 7.19.5 (i386-apple-darwin9. 7.0) libcurl / 7.19.5 zlib / 1.2.3 wygląda jak u trzeba uaktualnić zwijania
derevo
Wypróbowałem to na Fedorze 15 i Mac OSX 10.7.1. Ponadto pasek postępu pojawia się tylko wtedy, gdy go wypycham do pliku, więc curl -s google.com nie ma paska postępu, ale curl -s google.com > temp.html ma.
adammenges
1
Dla każdego, kto chce dowiedzieć się o wersji zainstalowanego curli libcurlużywać poleceniadpkg -l | grep curl
Dimitry K
1
W takim przypadku, należy uruchomić man curlza pokazanie ręcznego stronę curl, a następnie naciśnij /progresslub /hide progresslub stoplub cokolwiek do wyszukiwania kwerendy, aby uzyskać to, co chcesz. Następnie możesz uzyskać odpowiedź taką, jak sugerował chmac.
kenju

Odpowiedzi:

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

działa dla curl wersji 7.19.5 na Ubuntu 9.10 (bez paska postępu). Ale jeśli z jakiegoś powodu nie działa na twojej platformie, zawsze możesz przekierować stderr do / dev / null:

curl  http://google.com 2>/dev/null > temp.html
unutbu
źródło
31
Powinienem o tym pomyśleć. Ukryje także komunikaty o błędach.
Tom Zych,
1
W moim przypadku można używać / dev / null.
adammenges
Fajnie - działa świetnie. Miałem problem na centOS 6.3, ale nie na innych dystrybucjach - dziwne, ale proste łatwe obejście - dzięki!
Ross
nawiasem mówiąc, zobacz poniższy link, 2>/dev/nulljeśli nie wiesz: stackoverflow.com/questions/10508843/what-is-dev-null-21
kenju
Według strony podręcznika instalacji curl na hoście Ubuntu 14 -ssprawi, że curl nie będzie „pokazywał miernika postępu lub komunikatów o błędach ”. (Nie próbowałem testować ani czytać kodu źródłowego, aby zobaczyć, czy to naprawdę prawda.)
David Winiecki
535

W wersji 7.22.0 curl na Ubuntu i 7.24.0 na OSX Rozwiązaniem nie wykazują postęp , lecz pokazują błędów jest użycie zarówno -s( --silent) i -S( --show-error) w taki sposób:

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

Działa to zarówno dla przekierowanego wyjścia > /some/file, wyjścia | lesspotokowego, jak i wyjścia bezpośrednio do terminala.

chmac
źródło
3
W moim 7.35 użycie -sS eliminuje wskaźnik postępu, ale TAKŻE eliminuje informacje normalnie zapisywane na standardowe wyjście - których potrzebuję, ponieważ zawiera nazwę pliku zapisaną na dysku zamiast (innego) fileid, który musi być użyty w żądaniu. Wydaje się, że nie ma sposobu, aby po prostu pokonać sam miernik postępu!
Jack
48

Odkryłem, że w curl 7.18.2 pasek postępu pobierania nie jest ukryty za pomocą:

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

ale jest z:

curl -ss http://google.com > temp.html
Bill Healey
źródło
6

Nie jestem pewien, dlaczego to robi. Spróbuj -sz -oopcją ustawienia pliku wyjściowego zamiast >.

Tom Zych
źródło
0

W systemie MacOS 10.13.6 (High Sierra) działa opcja „-ss”. Jest to szczególnie użyteczne w Perlu, w poleceniu podobnym do tego curl -ss --get {someURL}, które, szczerze mówiąc, jest o wiele prostsze niż jakiekolwiek opakowanie LWP lub HTTP, do po prostu pobrania strony internetowej lub zawartości strony.

RLynch59
źródło
-1

Jakiś czas temu napisałem prosty skrypt do złomowania w celu wyszukania np. Zainstalowanych konkretnych wersji 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"

Używasz go w ten sposób: ./script.sh https://registry.hub.docker.com/v2/repositories/library/tomcat/tags/

Daniel Hajduk
źródło