В Bash и zsh (и, возможно, в других оболочках) вы можете использовать замену процесса ( Bash / zsh ) для создания файла на лету, а затем использовать его в качестве входных данных для следующего процесса в цепочке конвейера.
Например, я пытался разобрать вывод JSON из cURL с помощью jq
и less
, но получал Failed writing body
ошибку.
curl https://gitlab.com/api/v4/projects/ | jq | less
Когда я его переписал с подстановкой процесса, все заработало!
jq "" <(curl https://gitlab.com/api/v4/projects/) | less
Примечание: jq
использует второй аргумент для указания входного файла
Бонус: Если вы используете , jq
как я и хотите , чтобы держать Раскрашенную выход в less
, используйте следующую командную строку вместо того, чтобы :
jq -C "" <(curl https://gitlab.com/api/v4/projects/) | less -r
(Спасибо Kowaru за их объяснение, почему Failed writing body
это произошло. Однако их решение использовать tac
дважды не сработало для меня. Я также хотел найти решение, которое лучше масштабировалось бы для больших файлов, и пытается избежать других проблем, отмеченных как комментарии на этот ответ.)