Dans Bash et zsh (et peut-être d'autres shells), vous pouvez utiliser la substitution de processus ( Bash / zsh ) pour créer un fichier à la volée, puis l'utiliser comme entrée pour le processus suivant dans la chaîne du pipeline.
Par exemple, j'ai essayé d'analyser la sortie JSON de cURL en utilisant jq
y less
mais il a reçu le Failed writing body
erreur.
# Note: this does NOT work
curl https://gitlab.com/api/v4/projects/ | jq | less
Quand je l'ai réécrit en utilisant la substitution de processus, ça a marché !
# this works!
jq "" <(curl https://gitlab.com/api/v4/projects/) | less
Note : jq
utilise son 2ème argument pour spécifier un fichier d'entrée
Bonus : Si vous utilisez jq
comme moi et veulent garder la sortie colorée en less
utilisez plutôt la ligne de commande suivante :
jq -C "" <(curl https://gitlab.com/api/v4/projects/) | less -r
(Merci à Kowaru pour leur explication de pourquoi Failed writing body
se produisait. Cependant, leur solution consistant à utiliser tac
deux fois n'a pas fonctionné pour moi. J'ai également voulu trouver une solution qui s'adapterait mieux aux gros fichiers et tenterait d'éviter les autres problèmes notés en commentaire de cette réponse).