Estou executando um comando simples (algumas coisas relacionadas ao Kafka):
curl localhost:8083
Sua saída é muito simples:
root@debian:/etc/kafka# curl localhost:8083/
{"version":"0.11.0.0-cp1","commit":"6a8cf706ddc9ab6a"}root@debian:/etc/kafka#
Mas agora, quando uso a ferramenta utilitária jq
para formatar json, mais linhas são adicionadas:
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"
}
O mesmo acontece se eu canalizar para less
ou cat
da maneira esperada curl ... | less
. Então isso não tem nada a ver jq
consigo mesmo.
Meu conhecimento de todos os stdin, stdout, stderr, pipes (que são apenas junções de stdout para sdtin), redirecionamentos de arquivo > < 2>
, etc. não explica esse comportamento. :(
Responder1
Como muitas ferramentas UNIX, a saída curl
depende do tipo de dispositivo ao qual o stdout está conectado. Nesse caso, canalizar o ourput jq
altera o tipo de TTY
para pipe
, resultando em saída adicional indesejada.
curl
possui uma opção de linha de comando -s
que silencia essa saída adicional; portanto, a execução curl -s localhost:8083/ | jq
deve resolver o problema.