カールを使用してバイナリ出力を取得するのはなぜですか?

カールを使用してバイナリ出力を取得するのはなぜですか?

ソースを入手したいウェブサイトを共有できるかどうかはわかりませんが、より良い説明が必要だと思います。事前にそうでなかったらお詫び申し上げます。

注文する: curl -k -L -s https://www.mi.com

何らかの理由で、出力はバイナリデータであり、次のエラーが発生します。

Warning: Binary output can mess up your terminal. Use "--output -" to tell
Warning: curl to output it to your terminal anyway, or consider "--output
Warning: <FILE>" to save to a file.

ページのHTMLソースコードを読む方法は?ありがとうございます!

答え1

返されたデータは圧縮curl次のコマンドを追加することで、直接解凍を処理できます。--compressedオプション:

curl -k -L -s --compressed https://www.mi.com

答え2

ファイルにリダイレクトすると、ファイルが何であるかを調べることができます。

curl -k -L -s https://www.mi.com > outFile

これで、次のfileコマンドを使用してoutFile含まれている内容を確認できます。

$ file outFile 
outFile: gzip compressed data, from Unix, original size modulo 2^32 135402

圧縮したばかりのデータをダウンロードしました。表示するには圧縮してください。

mv outFile outFile.gz ## gzip requires the .gz extension
gunzip outFile.gz

または、次のように圧縮データを処理できるツールを使用してくださいzmore

zmore outFile

またはzcat:

zcat outFile

答え3

Use "--output -" to tell Warning: curl to output it to your terminal anyway

curl -k -L --output - s https://www.mi.com

または、--output file次のファイルに保存します。

curl -k -L --output filename s https://www.mi.com

そして、好きなエディタを使ってファイルを確認してください。

答え4

どんな形式なのかわからないならバイナリ出力もっと安全でしょうか出力形式の確認最初。

それ以外の場合は、すでに使用しているように、-sバッチ/自動化スクリプトなどのサイレントモードに対して次のことを実行できます。パイプを介して直接接続適切なバイナリコンバータで。

または、HTTP出力がすでに圧縮されていると仮定すると解凍する

バイナリカール出力の確認

  1. 使用-I応答ヘッダーのみを報告指定Content-されたヘッダービューメディアタイプ(また〜として知られているMIMEタイプ)は(バイナリ)形式を表します.
curl -k -L -s https://www.mi.com -I

たとえば、curl -k -L -s https://www.mi.com -I | grep Content-エンコード(UTF-8など)、バイト長(ここではリダイレクト後169747バイト)などの追加の出力メタデータも表示されます。

コンテンツタイプ: テキスト/html

コンテンツの長さ: 223

コンテンツタイプ:テキスト/html;文字セット=utf-8

画像の長さ:169747

注:上記のHTTP要求はリダイレクトされ、カールから2つの応答と2つの応答ヘッダーを取得します。 1つ目はリダイレクトで発生し、2つ目は最終出力で発生します。

  1. パイプを介してtypeバイナリデータ形式(ファイル形式)を確認します。
curl -k -L -s https://www.mi.com | type
  1. 使用-oまたは--outputファイルに保存:
curl -k -L -s https://www.mi.com -o outFile

類似> outFileterdonが提案したリダイレクト

バイナリ出力を渡す(例:画像ビューアとして)

パイプを使用して、応答ヘッダーに表示されている画像をContent-Type: image/x-icon標準入力を許可するビューアに渡すこともできますfeh

curl -k -L -s https://www.mi.com/favicon.ico | feh

カール出力の解凍

バイナリ出力は、次の結果になります。HTTP圧縮通常、帯域幅を節約し、転送速度を上げるために使用されます。

  1. パイプでzcat直接解凍して確認してください。
curl -k -L -s https://www.mi.com | zcat

カールの出力が期待どおりに圧縮されない場合は、次の警告が表示されます。

gzip:stdin:gzip形式ではありません

〜のようにTedenインタラクティブな説明

  1. 使用--compressed:
curl -k -L -s https://www.mi.com --compressed

〜のようにスティーブンが答えた

関連情報