Como faço para que o cURL não mostre a barra de progresso?

563

Estou tentando usar cURL em um script e fazê-lo não mostrar a barra de progresso.

Eu tentei o -s, -silent, -S, e -quietopções, mas nenhum deles funciona.

Aqui está um comando típico que eu tentei:

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

Eu só recebo a barra de progresso ao enviá-la para um arquivo, por curl -s http://google.comisso não tem uma barra de progresso, mas curl -s http://google.com > temp.htmlpossui.

adammenges
fonte
12
curl -s http://google.comfica em silêncio por mim aqui. Em qual versão do curl e Linux você está?
Adrian Petrescu
-s funciona bem para mim no curl 7.21.0 (i686-pc-linux-gnu) libcurl / 7.21.0 OpenSSL / 0.9.8o zlib / 1.2.3.4 libidn / 1.18 e curl 7.19.5 (i386-apple-darwin9. 7.0) libcurl / 7.19.5 zlib / 1.2.3 parece que você precisa atualizar seu curl
derevo
Eu tentei no Fedora 15 e no Mac OSX 10.7.1. Além disso, eu só obtenho a barra de progresso ao enviá-la para um arquivo, então curl -s google.com não tem uma barra de progresso, mas ondula -s google.com > temp.html.
adammenges
1
Para quem quer descobrir versão instalada curle libcurlcomando usodpkg -l | grep curl
Dimitry K
1
Em tal caso, um, correr man curlpara mostrar a página de manual de onda, em seguida, bateu /progressou /hide progressou stopou qualquer outra coisa para procurar consulta para obter o que deseja. Então você pode obter uma resposta como sugerido pelo chmac.
Kenju 23/08

Respostas:

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

funciona para curl versão 7.19.5 no Ubuntu 9.10 (sem barra de progresso). Mas se por algum motivo isso não funcionar na sua plataforma, você sempre poderá redirecionar o stderr para / dev / null:

curl  http://google.com 2>/dev/null > temp.html
unutbu
fonte
31
Eu devia ter pensado nisso. No entanto, também ocultará mensagens de erro.
Tom Zych 10/09
1
No meu caso, não há problema em usar / dev / null.
Adammenges
Bom - isso funciona muito bem. Eu tive o problema no centOS 6.3, mas não em outras distros - solução fácil bizarra, mas simples - thx!
Ross
a propósito, veja abaixo link sobre 2>/dev/nullse você não sabe: stackoverflow.com/questions/10508843/what-is-dev-null-21
Kenju
De acordo com a página de manual para uma instalação do curl em um host do ubuntu 14, -so curl não "mostra o medidor de progresso ou as mensagens de erro ". (Eu não tentei testar ou lendo o código-fonte para ver se isso é realmente verdade.)
David Winiecki
535

Na versão curl 7.22.0 no Ubuntu e 7.24.0 no OSX, a solução para não mostrar progresso, mas mostrar erros, é usar ambos -s( --silent) e -S( --show-error) da seguinte forma:

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

Isso funciona para saída redirecionada > /some/file, saída canalizada | lesse saída diretamente para o terminal para mim.

chmac
fonte
3
Para o meu 7.35, usar -sS elimina o medidor de progresso, mas TAMBÉM elimina as informações normalmente gravadas no stdout - o que eu preciso, pois inclui o nome do arquivo gravado no disco em vez do fileid (diferente) que deve ser usado na solicitação. Parece que não há como simplesmente derrotar o medidor de progresso sozinho!
Jack
48

Descobri que com o curl 7.18.2 a barra de progresso do download não está oculta com:

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

mas é com:

curl -ss http://google.com > temp.html
Bill Healey
fonte
6

Não sei por que está fazendo isso. Tente -scom a -oopção de definir o arquivo de saída em vez de >.

Tom Zych
fonte
0

No MacOS 10.13.6 (High Sierra), a opção '-ss' funciona. É especialmente útil dentro do perl, em um comando como curl -ss --get {someURL}, que francamente é muito mais simples do que qualquer um dos wrappers LWP ou HTTP, apenas para obter o conteúdo de um site ou página da web.

RLynch59
fonte
-1

Algum tempo atrás, escrevi um script simples para fazer a demolição, procurando por exemplo versões específicas do jdk instaladas:

#!/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"

Você usa assim: ./script.sh https://registry.hub.docker.com/v2/repositories/library/tomcat/tags/

Daniel Hajduk
fonte