cURL抑制応答本文


110

応答本文の出力を抑制するようにcURLに指示することはできますか?

私の場合、応答の本文はHTMLページであり、CLIバッファーをオーバーフローしているため、関連情報を見つけるのが困難です。HTTP応答コード、ヘッダーなど、出力の他の部分を調べたい- 実際のHTML を除くすべて。

回答:


116

-oスイッチとnull疑似ファイルを使用できます。

Unix

curl -s -o /dev/null -v http://google.com

ウィンドウズ

curl -s -o nul -v http://google.com

1
... Unixを使用している場合;-) Windowsの場合は、nulを使用できます。ここではドキュメントへのリンクがあり、おそらくBaltoStarは、次の時間を尋ねる前に読みたい衝動を感じている;-) curl.haxx.se/docs/manpage.html
Marged

3
どういたしまして。しかし、これは「nul」であり、「null」はその名前のファイルを作成します
Marged

1
実際、投稿する前にmanページを読んで試しまし-s -o nulたが、Windowsマシンの curl -s -o nul -v http://{internal-host}/{internal-uri}出力ページのHTML全体curl -s -o nul -v http://google.comが出力されました-私は試しましたが、期待どおりに出力を抑制します。そのため、これが私の内部サイトで機能しない理由がわかりません
BaltoStar

-o1つのURL出力のみを指定します:複数のURLがある場合、最初の:(
Simon Buchan

1
非ポータブルに依存しているNUL/dev/null-sIXGETIMO を使用する方が良いオプションです。
binki 2018

45

すべてのカールの出力とヘッダーを抑制する方法を次に示します。エラーが発生した場合でもエラーを表示するオプションがあります。cronジョブまたは自動テストに役立ちます。

Unix

すべての出力を抑制するには:

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

パラメータの説明

--silentHTTP応答が単なるDNS /ではなくエラーコード(404、500など)の場合、モードが有効な場合でもエラーが発生
--output /dev/nullしますが、ダウンロード中の統計を抑制します(ただし、HTML出力は引き続き表示します)。 TCPエラー。
--show-errorsilent
--fail


更新:私は、元の作者がすべてを沈黙させるのではなく、リクエストのヘッダーと応答コードを検査したかったことに気づきました。参照してくださいSAMAELの答えそれを行う方法の詳細については、を。


2
非ポータブルに依存しているNUL/dev/null-sIXGETIMO を使用する方が良いオプションです。
binki 2018

1
コメント@binkiをありがとう-彼らは実際には別のことをする。また、OPが私のソリューションに表示されないヘッダーを検査したいことにも気付きました。私はそれを反映するために私の答えを更新しました。
サイモンイースト

1
OPの投稿を再読したときに、ヘッダーだけを見たいとは言わなかったと思います。彼らは実際にcurl -vo/dev/null/を探していたのかもしれcurl -voNULませんが、そのポータブルな変形があるかどうかはわかりません、hrm…;-)。
binki 2018

--failの短いコマンドはありますか?-sSは--silentと--show-errorの両方に必要なものだと思います
Freedo

はい、ありますcurl -Ssfo /dev/null url。しかし、将来のメンテナに親切にしてください。
Amit Naidu

28

ヘッダーは表示するがレスポンスボディは非表示にする場合は、次のように使用します。

curl -sIXGET http://somedomain.com/your/url

私はcurl -I http://somedomain.com/your/url単に応答ヘッダーを表示するために使用していました。ただし、リクエストに応答するだけのAPI呼び出しをテストする場合は、不適切なHEADメソッドを使用してリクエストを作成するという問題がありますGET。これがの-X GET目的であり、リクエストをに変更しGETます。

つまり、要約すると:

-s皮出力からプログレスバー(特に有用な別のプログラムに配管する場合)
-Iを示しヘッダー(しかしせるHEAD要求)を
-XGET変換バックする要求GETリクエスト

参照してください:http : //www.woolie.co.uk/article/curl-full-get-request-dropping-body/


2
それは本当に複雑です。curl -iまったく同じことをします。
bfontaine 2018

4
いいえ、-i出力と本文にHTTPヘッダーが含まれます。それを試してみてください。curl -i http://google.comとはcurl -IXGET http://google.com
異なります

私の目的(およびOP)にcurl -I urlは十分であり、同じ効果があります。URLが応答しているかどうかを確認する必要がありました。この質問もまた、身体を抑制することについてのみであり、それHEADはうまくいきました。
Amit Naidu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.