Конвейер StdOut добавляет больше текста

Конвейер StdOut добавляет больше текста

Я запускаю простую команду (что-то связанное с Kafka):

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зависит от того, к какому типу устройства подключен stdout. В этом случае конвейеризация вывода jqизменяет тип с TTYна pipe, что приводит к нежелательному дополнительному выводу.

curlимеет переключатель командной строки -s, который отключает этот дополнительный вывод, поэтому запуск curl -s localhost:8083/ | jqдолжен решить проблему.

Связанный контент