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#

しかし、ユーティリティ ツールを使用してjqjson をフォーマットすると、さらに行が追加されます。

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またはにパイプした場合も同じことが起こります。したがって、これはそれ自体とは関係ありません。catcurl ... | lessjq

stdin、stdout、stderr、パイプ (stdout と sdtin の結合)、ファイル リダイレクト> < 2>などに関する私の知識では、この動作を説明できません。:(

答え1

多くの UNIX ツールと同様に、 の出力は、curlstdout が接続されているデバイスの種類によって異なります。この場合、出力をパイプすると、jqタイプが から に変更されTTYpipe不要な追加出力が発生します。

curl-sには、この追加出力を無音にするコマンドラインスイッチがあるため、 curl -s localhost:8083/ | jqshold を実行すると問題は解決します。

関連情報