Estoy ejecutando un comando simple (algunas cosas relacionadas con Kafka):
curl localhost:8083
Su salida es muy simple:
root@debian:/etc/kafka# curl localhost:8083/
{"version":"0.11.0.0-cp1","commit":"6a8cf706ddc9ab6a"}root@debian:/etc/kafka#
Pero ahora, cuando uso la herramienta de utilidad jq
para formatear json, se agregan más líneas:
root@debian:/etc/kafka# curl localhost:8083/ | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 54 100 54 0 0 1492 0 --:--:-- --:--:-- --:--:-- 1500
{
"version": "0.11.0.0-cp1",
"commit": "6a8cf706ddc9ab6a"
}
Lo mismo sucede si lo canalizo less
de cat
la manera esperada curl ... | less
. Entonces esto no tiene nada que ver jq
consigo mismo.
Mi conocimiento de todas las stdin, stdout, stderr, canalizaciones (que son solo uniones de stdout a sdtin), redireccionamientos de archivos > < 2>
, etc. no explica este comportamiento. :(
Respuesta1
Como ocurre con muchas herramientas UNIX, la salida curl
depende del tipo de dispositivo al que esté conectado stdout. En este caso, canalizar la salida jq
cambia el tipo de TTY
a pipe
, lo que genera una salida adicional no deseada.
curl
tiene un modificador de línea de comandos -s
que silencia esta salida adicional, por lo que ejecutar curl -s localhost:8083/ | jq
debería resolver el problema.