応答本文の出力を抑制するようにcURLに指示することはできますか?
私の場合、応答の本文はHTMLページであり、CLIバッファーをオーバーフローさせるため、関連情報を見つけるのが難しくなります。 HTTP応答コード、ヘッダー、e.t.cなど、出力の他の部分を調べたいです。 -すべて除く実際のHTML。
-o
スイッチとnull
疑似ファイルを使用できます。
curl -s -o /dev/null -v http://google.com
curl -s -o nul -v http://google.com
すべてのcurl出力とヘッダーを抑制する方法を次に示します。エラーが発生した場合でもエラーを表示するオプションがあります。 cronジョブまたは自動テストに役立ちます。
すべての出力を抑制するには:
curl --silent --output /dev/null http://example.com
出力を抑制しながらエラーが発生した場合でもエラーを表示するには:
curl --silent --output /dev/null --show-error --fail http://example.com
すべての出力を抑制するには:
curl --silent --output nul http://example.com
出力を抑制しながらエラーが発生した場合でもエラーを表示するには:
curl --silent --output nul --show-error --fail http://example.com
--silent
はダウンロード中の統計を抑制します(ただし、HTML出力は表示されます)--output /dev/null
は成功した出力を非表示にします--show-error
は、silent
モードが有効な場合でもエラーを表示します--fail
は、HTTP応答が単なるDNS/TCPエラーではなくエラーコード(404、500など)の場合にエラーを発生させます。
UPDATE:元の作者は、すべてを消音するのではなく、リクエストのヘッダーと応答コードを検査したかったことを理解していますすべて。その方法の詳細については、 samael's answer をご覧ください。
ヘッダーを表示するが、応答本文を非表示にする場合は、次を使用します。
curl -sIXGET http://somedomain.com/your/url
応答ヘッダーを表示するためだけにcurl -I http://somedomain.com/your/url
を使用していました。ただし、問題は HEAD
メソッド を使用してリクエストを行うことです。これは、GET
リクエストにのみ応答するAPI呼び出しをテストする場合は役に立ちません。これが-X GET
の目的です。リクエストをGET
に変更します。
したがって、要約すると:
-s
は出力からプログレスバーを非表示にします(特に別のプログラムにパイプするときに便利です)-I
はヘッダーを表示します(ただし、HEAD
リクエストを作成します)-XGET
リクエストをGET
リクエストに変換します
参照: http://www.woolie.co.uk/article/curl-full-get-request-dropping-body/