Parece que no puedo jqcomportarme "normalmente" en una tubería de shell. Por ejemplo:
$ curl -s https://api.github.com/users/octocat/repos | jq | cat
da como resultado jqsimplemente imprimir su texto de ayuda *. Lo mismo sucede si intento redirigir jqla salida a un archivo:
$ curl -s https://api.github.com/users/octocat/repos | jq > /tmp/stuff.json
¿Está jqrescatando deliberadamente si determina que no se está ejecutando desde un tty? ¿Cómo puedo evitar este comportamiento para poder usarlo jqen una tubería?
* (Me doy cuenta de que este ejemplo contiene un uso inútil del gato ; es solo para fines ilustrativos)

jqes tanto leer de una tubería como escribir en otra tubería. Si el deseo es simplemente ver la salida dejq, entoncescatsí mismo es innecesario..por costumbre, ya que mi práctica estándar es ver primero cómo se ve el JSON, luego regresar y comenzar a agregar al filtro, que la mayoría de las veces será necesario citar.Un caso de uso que me he encontrado haciendo frecuentemente también es "¿Cómo construyo datos JSON para suministrarlos a otros comandos de shell, por ejemplo
curl?" La forma en que hago esto es usando la--null-input/-nopción:Y un ejemplo pasándolo a
curl:fuente
jqal comienzo de una tubería de shell en lugar de en el medio / final para filtrar algunos datos. Elcurlejemplo es básico, pero a menudo me encuentro escribiendo a mano los datos de JSONcurly tratando de citar correctamente, así que pensé que podría ser útil también para otros.