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.


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

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.


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

6

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


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.


-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/

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.