管道標準輸出添加更多文本

管道標準輸出添加更多文本

我正在運行一個簡單的命令(一些 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"
}

如果我將其透過管道傳輸到lesscat以預期的方式,也會發生同樣的情況curl ... | less。所以這與它本身無關jq

我對所有 stdin、stdout、stderr、管道(只是 stdout 到 sdtin 的連接)、檔案重定向> < 2>等的了解並不能解釋這種行為。 :(

答案1

與許多 UNIX 工具一樣, 的輸出curl取決於 stdout 所連接的裝置類型。在這種情況下,透過管道傳輸輸出jq會將類型從 更改為TTYpipe從而導致不需要的額外輸出。

curl有一個命令列開關-s,可以使這個額外的輸出靜音,因此運行curl -s localhost:8083/ | jq應該可以解決問題。

相關內容