1 votes

Piping StdOut ajoute plus de texte

J'exécute une commande simple (quelques trucs liés à Kafka) :

curl localhost:8083

Sa sortie est très simple :

root@debian:/etc/kafka# curl localhost:8083/
{"version":"0.11.0.0-cp1","commit":"6a8cf706ddc9ab6a"}root@debian:/etc/kafka#

Mais maintenant, quand j'utilise l'outil utilitaire jq pour formater le json, plus de lignes sont ajoutées :

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"
}

La même chose se produit si je l'envoie à less o cat de la manière attendue curl ... | less . Cela n'a donc rien à voir avec jq lui-même.

Ma connaissance de tous les stdin, stdout, stderr, pipes (qui ne sont que des jonctions de stdout à sdtin), redirections de fichiers > < 2> etc. n'explique pas ce comportement :(

2voto

Eugen Rieck Points 19064

Comme de nombreux outils UNIX, la sortie de curl dépend du type de périphérique auquel stdout est attaché. Dans ce cas, le fait de faire passer la sortie par jq change le type de TTY a pipe ce qui entraîne une production supplémentaire non désirée.

curl a un commutateur de ligne de commande -s qui fait taire cette sortie supplémentaire, de sorte que l'exécution de curl -s localhost:8083/ | jq devrait résoudre le problème.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X