Parece que não consigo me jq
comportar "normalmente" em um pipeline de shell. Por exemplo:
$ curl -s https://api.github.com/users/octocat/repos | jq | cat
resulta na jq
simples impressão do texto de ajuda *. O mesmo acontece se eu tentar redirecionar jq
a saída para um arquivo:
$ curl -s https://api.github.com/users/octocat/repos | jq > /tmp/stuff.json
Está jq
saindo deliberadamente se determinar que não está sendo executado a partir de um tty? Como posso evitar esse comportamento para poder usar jq
em um pipeline?
* (Eu sei que este exemplo contém um uso inútil de gato ; é apenas para fins ilustrativos)
jq
é a leitura de um pipe e a gravação em outro pipe. Se o desejo é simplesmente ver a saída dejq
, entãocat
ele é desnecessário..
hábito, já que minha prática padrão é primeiro ver como é o JSON, depois voltar e começar a adicionar ao filtro, que mais frequentemente precisará ser citado.Um caso de uso que me vi frequentemente: "Como construo dados JSON para fornecer em outros comandos do shell, por exemplo
curl
?" A maneira como faço isso é usando a--null-input/-n
opção:E um exemplo passando para
curl
:fonte
jq
no início de um pipeline de shell em vez de no meio / final para filtrar alguns dados. Ocurl
exemplo é básico, mas eu me encontrei frequentemente digitando manualmente dados JSONcurl
e tentando fazer a citação correta, então pensei que poderia ser útil para outras pessoas também.