Piping StdOut agrega más texto

Piping StdOut agrega más texto

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 jqpara 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 lessde catla manera esperada curl ... | less. Entonces esto no tiene nada que ver jqconsigo 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 curldepende del tipo de dispositivo al que esté conectado stdout. En este caso, canalizar la salida jqcambia el tipo de TTYa pipe, lo que genera una salida adicional no deseada.

curltiene un modificador de línea de comandos -sque silencia esta salida adicional, por lo que ejecutar curl -s localhost:8083/ | jqdebería resolver el problema.

información relacionada