Использование curl -v ...
, то есть подробного режима, который печатает заголовки ввода и вывода. Тем не менее, эта информация не передается, и я не могу вычеркнуть строки, которые мне не нужны.
Как вы можете отфильтровать вывод заголовка curl?
Вместо использования curl -v
(подробный режим) лучшим вариантом является указание curl
выводить заголовки в STDOUT без всех дополнительных отладочных вещей и удалять тело из ответа. Таким образом, вы можете выполнять точный поиск заголовков ответов, избегать необходимости перенаправления оболочки и знать, что вашей фильтрации не придется понимать и анализировать внутренние сообщения отладки curl
(которые, вероятно, не считаются частью его API).
Вы можете сделать это путем объединения параметров -I
(drop body), -X«METHOD»
(метод переопределения) и -s
(без вывода сообщений, сбросить индикаторы выполнения).
curl -sIXGET https://www.google.com/ | grep -vi content-length
-s
дает команду curl
скрывать индикаторы выполнения. Если он опущен и curl
обнаруживает, что он работает в терминале, он будет обходить канал и напрямую общаться с терминалом, чтобы показать индикаторы выполнения, которые часто бесполезны и загромождают терминал.-I
инструктирую curl
отключаться от сервера после получения заголовков вместо ожидания тела. Это полезно, если вы на самом деле, как указано в вашем вопросе, заинтересованы в просмотре только заголовков ответа HTTP. У него также есть побочный эффект, заключающийся в том, что по умолчанию метод запроса имеет значение HEAD
как если бы вы указали -XHEAD
.-X«method»
(например, -XGET
) переопределяет метод. Во многих случаях запрос HEAD
- это то, что вам нужно, потому что стандарт HTTP гласит, что HEAD
должен возвращать точно такие же заголовки, что и тот же GET
. Однако при отладке сервера или работе с сервером, который не соответствует стандарту, может быть полезно дать команду curl
сделать запрос GET
но отключить его перед чтением тела ответа. Таким образом, вы можете увидеть фактические заголовки, которые сервер отправит в ответ на GET
вместо того, чтобы надеяться, что сервер реализован правильно.Заголовок, выводимый из curl
печатается со стандартной ошибкой. Таким образом, вы должны использовать перенаправление, например, отключая заголовок Content-Length
:
curl -v google.com 2>&1 | grep -vi content-length