我正在運行一個簡單的命令(一些 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
應該可以解決問題。