174 votes

Comment canaliser ou rediriger la sortie de curl -v ?

Pour une raison quelconque, la sortie est toujours imprimée vers le terminal, que je la redirige via 2> ou > ou |. Y a-t-il un moyen de contourner ça ? Pourquoi cela se produit-il ?

205voto

IfLoop Points 59461

ajoutez l'option -s (silencieuse) pour supprimer le compteur de progression, puis redirigez stderr vers stdout pour obtenir une sortie verbeuse sur la même fd que le corps de la réponse

curl -vs google.com 2>&1 | less

131voto

roadnottaken Points 481

Votre URL contient probablement des sables durs. J'ai eu ce problème, aussi, et j'ai réalisé que mon URL était plein d'ampersands (à partir de variables CGI étant passé) et donc tout était envoyé à l'arrière-plan d'une manière bizarre et donc pas rediriger correctement. Si vous mettez des guillemets autour de l'URL, il le corrigera.

42voto

Amir Mehler Points 155

La réponse ci-dessus n'a pas fonctionné pour moi, ce qui a finalement été cette syntaxe :

curl https://${URL} &> /dev/stdout | tee -a ${LOG}

tee met la sortie à l'écran, mais l'ajoute aussi à mon journal.

21voto

panepeter Points 83

Si vous avez besoin de la sortie dans un fichier, vous pouvez utiliser une redirection :

curl https://vi.stackexchange.com/ -vs >curl-output.txt 2>&1

Assurez-vous de ne pas retourner les >curl-output.txt 2>&1, qui ne fonctionneront pas en raison du comportement de redirection de bash.

10voto

Juste mes 2 cents. La commande ci-dessous devrait faire l'affaire, comme répondu plus tôt

curl -vs google.com 2>&1

Cependant, si vous avez besoin d'obtenir la sortie vers un fichier,

curl -vs google.com > out.txt 2>&1

devrait fonctionner.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X