Кажется, я не могу jq
вести себя «нормально» в конвейере оболочки. Например:
$ curl -s https://api.github.com/users/octocat/repos | jq | cat
приводит к jq
простой распечатке текста справки *. То же самое происходит, если я пытаюсь перенаправить jq
вывод в файл:
$ curl -s https://api.github.com/users/octocat/repos | jq > /tmp/stuff.json
Является ли jq
намеренно выручать , если он установит , что это не запускается из TTY? Как я могу предотвратить это поведение, чтобы я мог использовать его jq
в конвейере?
* (Я понимаю, что этот пример содержит бесполезное использование cat ; это только для иллюстрации)
jq
и чтение из канала и запись в другой канал. Если желание просто увидеть результатjq
, тоcat
само по себе не является необходимым..
по привычке, поскольку моя стандартная практика - сначала посмотреть, как выглядит JSON, затем вернуться и начать добавлять в фильтр, который чаще всего нужно будет заключать в кавычки.Один из случаев использования, который я часто выполнял, - это «Как мне сконструировать данные JSON для передачи в другие команды оболочки, например
curl
?» Я делаю это с помощью--null-input/-n
опции:И пример передачи его в
curl
:источник
jq
в начале конвейера оболочки, а не в середине / конце для фильтрации некоторых данных. Этотcurl
пример является базовым, но мне часто приходилось вручную набирать данные JSONcurl
и пытаться получить правильные цитаты, поэтому я подумал, что это может быть полезно и другим.