En Bash y zsh (y quizás otros shells), puede usar la sustitución de procesos ( Bash / zsh ) para crear un archivo sobre la marcha, y luego usarlo como entrada para el siguiente proceso en la cadena de canalización.
Por ejemplo, estaba tratando de analizar la salida JSON de cURL usando jq
y less
, pero recibía el Failed writing body
error.
# Note: this does NOT work
curl https://gitlab.com/api/v4/projects/ | jq | less
Cuando lo reescribí usando la sustitución del proceso, ¡funcionó!
# this works!
jq "" <(curl https://gitlab.com/api/v4/projects/) | less
Nota: jq
usa su segundo argumento para especificar un archivo de entrada
Bono: Si usted está utilizando jq
como yo y quiere mantener la salida coloreada en less
, utilice la siguiente línea de comandos en su lugar:
jq -C "" <(curl https://gitlab.com/api/v4/projects/) | less -r
(Gracias a Kowaru por su explicación de por qué Failed writing body
estaba ocurriendo. Sin embargo, su solución de usar tac
dos veces no funcionó para mí. También quería encontrar una solución que escalara mejor para archivos grandes y trata de evitar los otros problemas señalados como comentarios a esa respuesta.)