Я хотел бы напечатать в командной строке некоторые выходные данные curl, такие как заголовки http, за которыми следует тело ответа, обработанного программой stdin / stdout. Например:
Распечатайте код состояния: curl -s -w "%{http_code} \\n" -o "/dev/null" http://myURL.com
А затем обработайте вывод с помощью инструмента синтаксического анализа json: curl -s http://myURL.com | python -mjson.tool
Я хотел бы сделать и то, и другое с помощью одной команды, и у меня такое ощущение, что это возможно благодаря опции -o, которая определяет разницу между выводом curl и фактическим ответом на запрос. Проблема в том, что -o записывает прямо в файл. У кого-нибудь есть взлом?
Вы можете использовать замену процесса bash >(cmd)
. Например:
curl -s -w "%{http_code}\n" -o >(ruby -ne 'printf("-%6s%s", $., $_)') http://www.example.com/
Другой вариант, который может удовлетворить ваши потребности: curl -v
, который отправит заголовки на stderr, а тело - на stdout. Например.,
curl -v http://www.example.com/ | ruby -ne 'printf("-%6s%s", $., $_)'