No Bash e no zsh (e talvez em outros shells), você pode usar a substituição de processo ( Bash / zsh ) para criar um arquivo rapidamente e, em seguida, usá-lo como entrada para o próximo processo na cadeia de pipeline.
Por exemplo, eu estava tentando analisar a saída JSON do cURL usando jq
e less
, mas estava obtendo o Failed writing body
erro.
# Note: this does NOT work
curl https://gitlab.com/api/v4/projects/ | jq | less
Quando eu o reescrevi usando substituição de processo, funcionou!
# this works!
jq "" <(curl https://gitlab.com/api/v4/projects/) | less
Nota: jq
usa seu segundo argumento para especificar um arquivo de entrada
Bônus: Se você estiver usando jq
como eu e quer manter a saída colorizado em less
, use a seguinte linha de comando em vez disso:
jq -C "" <(curl https://gitlab.com/api/v4/projects/) | less -r
(Obrigado a Kowaru pela explicação sobre o motivo da Failed writing body
ocorrência. No entanto, a solução de usar tac
duas vezes não funcionou para mim. Eu também queria encontrar uma solução que fosse melhor dimensionada para arquivos grandes e tente evitar os outros problemas mencionados como comentários. para essa resposta.)