Respuestas:
agregue la -s
opción (silenciosa) para eliminar el medidor de progreso, luego redirija stderr a stdout para obtener una salida detallada en el mismo fd que el cuerpo de respuesta
curl -vs google.com 2>&1 | less
2>&1
.
Su URL probablemente tenga símbolos de unión. También tuve este problema, y me di cuenta de que mi URL estaba llena de símbolos y símbolos (de las variables CGI que se pasaban) y, por lo tanto, todo se enviaba al fondo de una manera extraña y, por lo tanto, no se redirigía correctamente. Si coloca comillas alrededor de la URL, la arreglará.
La respuesta anterior no funcionó para mí, lo que finalmente hizo fue esta sintaxis:
curl https://${URL} &> /dev/stdout | tee -a ${LOG}
tee pone la salida en la pantalla, pero también la agrega a mi registro.
&> /dev/stdout
fue definitivamente la parte que faltaba, gracias
Si necesita la salida en un archivo , puede usar una redirección:
curl https://vi.stackexchange.com/ -vs >curl-output.txt 2>&1
Por favor, asegúrese de no voltear >curl-output.txt
y 2>&1
, que no funcionará debido al comportamiento de redirección de bash .
Encontré lo mismo: curl por sí solo se imprimiría en STDOUT, pero no se podría canalizar a otro programa.
Al principio, pensé que lo había resuelto usando xargs para hacer eco de la salida primero:
curl -s ... <url> | xargs -0 echo | ...
Pero luego, como se señaló en los comentarios, también funciona sin la parte xargs, por lo que -s
(modo silencioso) es la clave para evitar la salida de progreso extraño a STDOUT:
curl -s ... <url> | perl -ne 'print $1 if /<sometag>([^<]+)/'
El ejemplo anterior toma el <sometag>
contenido simple (que no contiene etiquetas incrustadas) de la salida XML de la declaración curl.
Solo mis 2 centavos. El siguiente comando debería hacer el truco, como se respondió anteriormente
curl -vs google.com 2>&1
Sin embargo, si necesita obtener la salida en un archivo,
curl -vs google.com > out.txt 2>&1
Deberia trabajar.
Este sencillo ejemplo muestra cómo capturar la salida de curl y usarla en un script bash
function main
{
\curl -vs 'http://google.com' 2>&1
# note: add -o /tmp/ignore.png if you want to ignore binary output, by saving it to a file.
}
# capture output of curl to a variable
OUT=$(main)
# search output for something using grep.
echo
echo "$OUT" | grep 302
echo
echo "$OUT" | grep title
curl -v url 2>&1
, los errores se redirigen correctamente a la salida estándar para mí.