Piping StdOut добавляет больше текста
Я запускаю простую команду (некоторые вещи, связанные с Кафкой):
curl localhost:8083
Его вывод очень прост:
root@debian:/etc/kafka# curl localhost:8083/
{"version":"0.11.0.0-cp1","commit":"6a8cf706ddc9ab6a"}root@debian:/etc/kafka#
Но сейчас, когда я использую утилиту jq
для форматирования json добавляется больше строк:
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"
}
То же самое происходит, если я less
или же cat
ожидаемым образом curl ... | less
, Так что это не имеет ничего общего с jq
сам.
Мои знания обо всех stdin, stdout, stderr, каналах (которые являются просто соединениями stdout и sdtin), файловых перенаправлений > < 2>
и т. д. не объясняет это поведение.:(
1 ответ
Как и многие инструменты UNIX, вывод curl
зависит от того, к какому типу устройства подключен стандартный вывод. В этом случае прокачка нашего ресурса через jq
меняет тип с TTY
в pipe
, что приводит к нежелательному дополнительному выводу.
curl
имеет переключатель командной строки -s
глушит этот дополнительный вывод, поэтому работает curl -s localhost:8083/ | jq
должен решить вопрос.