Parece que no puedo jq
comportarme "normalmente" en una tubería de shell. Por ejemplo:
$ curl -s https://api.github.com/users/octocat/repos | jq | cat
da como resultado jq
simplemente imprimir su texto de ayuda *. Lo mismo sucede si intento redirigir jq
la salida a un archivo:
$ curl -s https://api.github.com/users/octocat/repos | jq > /tmp/stuff.json
¿Está jq
rescatando deliberadamente si determina que no se está ejecutando desde un tty? ¿Cómo puedo evitar este comportamiento para poder usarlo jq
en una tubería?
* (Me doy cuenta de que este ejemplo contiene un uso inútil del gato ; es solo para fines ilustrativos)
jq
es tanto leer de una tubería como escribir en otra tubería. Si el deseo es simplemente ver la salida dejq
, entoncescat
sí 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/-n
opción:Y un ejemplo pasándolo a
curl
:fuente
jq
al comienzo de una tubería de shell en lugar de en el medio / final para filtrar algunos datos. Elcurl
ejemplo es básico, pero a menudo me encuentro escribiendo a mano los datos de JSONcurl
y tratando de citar correctamente, así que pensé que podría ser útil también para otros.