Comment faire pour que cURL n'affiche pas la barre de progression?

564

J'essaie d'utiliser cURL dans un script et de ne pas afficher la barre de progression.

Je l' ai essayé le -s, -silent, -S, et les -quietoptions, mais aucun d'entre eux travaillent.

Voici une commande typique que j'ai essayée:

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

Je n'obtiens la barre de progression qu'en la poussant dans un fichier, donc curl -s http://google.comje n'ai pas de barre de progression, mais c'est le curl -s http://google.com > temp.htmlcas.

adammenges
la source
12
curl -s http://google.comest silencieux pour moi ici. Sur quelle version de curl et Linux êtes-vous?
Adrian Petrescu
-s fonctionne bien pour moi dans curl 7.21.0 (i686-pc-linux-gnu) libcurl / 7.21.0 OpenSSL / 0.9.8o zlib / 1.2.3.4 libidn / 1.18 et curl 7.19.5 (i386-apple-darwin9. 7.0) libcurl / 7.19.5 zlib / 1.2.3 semble que vous devez mettre à jour votre boucle
derevo
Je l'ai essayé sur Fedora 15 et Mac OSX 10.7.1. De plus, je ne reçois la barre de progression que lorsque je la pousse dans un fichier, donc curl -s google.com n'a pas de barre de progression, mais curl -s google.com > temp.html en a.
adammenges
1
Pour tous ceux qui veulent comprendre la version de la commande installée curlet libcurlutiliserdpkg -l | grep curl
Dimitry K
1
Dans un tel cas, exécutez man curlpour afficher la page manuelle de curl, puis appuyez sur /progressou /hide progressou stopou autre pour rechercher la requête pour obtenir ce que vous voulez. Ensuite, vous pouvez obtenir une réponse comme suggéré par chmac.
kenju

Réponses:

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

fonctionne pour curl version 7.19.5 sur Ubuntu 9.10 (pas de barre de progression). Mais si pour une raison qui ne fonctionne pas sur votre plate-forme, vous pouvez toujours rediriger stderr vers / dev / null:

curl  http://google.com 2>/dev/null > temp.html
unutbu
la source
31
J'aurais dû penser à cela. Cela masquera également les messages d'erreur.
Tom Zych
1
Dans mon cas, c'est correct d'utiliser / dev / null.
adammenges
Nice - cela fonctionne très bien. J'ai eu le problème sur centOS 6.3, mais pas sur d'autres distributions - bizarre, mais simple solution de contournement facile - merci!
Ross
au fait, voir le lien ci-dessous pour savoir 2>/dev/nullsi vous ne savez pas: stackoverflow.com/questions/10508843/what-is-dev-null-21
kenju
Selon la page de manuel pour une installation de curl sur un hôte ubuntu 14, -scurl ne "montrera pas le compteur de progression ou les messages d'erreur ". (Je n'ai pas essayé de tester ou de lire le code source pour voir si c'est vraiment vrai.)
David Winiecki
535

Dans la version curl 7.22.0 sur Ubuntu et 7.24.0 sur OSX, la solution pour ne pas afficher la progression mais pour afficher les erreurs consiste à utiliser à la fois -s( --silent) et -S( --show-error) comme ceci:

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

Cela fonctionne pour la sortie redirigée > /some/file, la sortie canalisée | lesset la sortie directe vers le terminal pour moi.

chmac
la source
3
Pour ma version 7.35, l'utilisation de -sS élimine le compteur de progression mais élimine ÉGALEMENT les informations normalement écrites sur stdout - dont j'ai besoin, car elle inclut le nom de fichier tel qu'il est écrit sur le disque au lieu de l'ID de fichier (différent) qui doit être utilisé dans la demande. Il ne semble pas possible de vaincre simplement l'indicateur de progression seul!
Jack
48

J'ai trouvé qu'avec curl 7.18.2 la barre de progression du téléchargement n'est pas cachée avec:

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

mais c'est avec:

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

Je ne sais pas pourquoi ça fait ça. Essayez -savec l' -ooption de définir le fichier de sortie au lieu de >.

Tom Zych
la source
0

Sur MacOS 10.13.6 (High Sierra), l'option '-ss' fonctionne. Il est particulièrement utile à l'intérieur de Perl, dans une commande comme curl -ss --get {someURL}, qui est franchement beaucoup plus simple que n'importe quel wrapper LWP ou HTTP, pour obtenir simplement le contenu d'un site Web ou d'une page Web.

RLynch59
la source
-1

Il y a quelque temps, j'ai écrit un script simple pour effectuer la mise au rebut pour rechercher par exemple des versions spécifiques de jdk installées:

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

Vous l'utilisez comme ceci: ./script.sh https://registry.hub.docker.com/v2/repositories/library/tomcat/tags/

Daniel Hajduk
la source