curlコマンドのオプション一覧

参考 : https://ss64.com/bash/curl.html

curlコマンドは次のいずれかのプロトコルを使用して、またはサーバーからデータを転送します。

HTTP、HTTPSFTP、FTPS、SCP、SFTP、TFTP、DICT、TelnetLDAPまたはファイル。

もし複数のファイルを転送したければ、wgetまたはftpコマンドを使用してください。

構文

curl [options] [url ...]
  • urlでは次のように{}を使用して複数のファイルを取得することができます。
https://site.{1,2,3}.com
  • 次のように[]を使用して、英数字のシーケンスを使用してデータを取得できます。
ftp://ftp.numericals.com/file[1-100].txt

ftp://ftp.numericals.com/file[001-100].txt(先頭にゼロ付き)

ftp://ftp.letters.com/file[a-z].txt

curlコマンドのすべてのオプション

  • -A, --user-agent <エージェント文字列>

    • HTTPサーバーに送信するユーザーエージェント文字列を指定します。

    • 文字列内のブランクをエンコードするには、文字列をシングルクオートで囲みます。

    • これは、-H, --headerオプションで設定することもできます。(HTTP)

  • -b, --cookie <name=data>

    • CookieとしてHTTPサーバーにデータを送信します。これはおそらく、以前にサーバーから受信したSet-Cookie:行のデータです。

    • データはname1=value1; name2=value2という形式である必要があります。

  • -c, --cookie-jar <ファイル名>

    • 完了した操作後にクッキーをファイルに保存します。

    • curlは指定されたファイルに以前に読み取ったすべてのCookieとリモートサーバーから受信したすべてのCookieを書き込みます。

    • Cookieが存在しない場合、ファイルは書き込まれません。

    • stdoutに書き込むには、ファイル名を単一のダッシュ-に設定します。

  • --compressed

    • アルゴリズムのいずれかを使用して圧縮応答をリクエストします。

    • curlgzipをサポートし、非圧縮ドキュメントを保存します。

    • このオプションが使用され、サーバーがサポートされていないエンコードを送信した場合、curlはエラーを報告します。(HTTP)

  • -d, --data <@file | "string">

    • 指定されたデータをHTTP POSTリクエストで送信します。

    • Webブラウザが行うように、データはapplication/x-www-form-urlencodedのコンテンツタイプで渡されます。

    • -d, --data--data-asciiと同じです。純粋なバイナリデータを投稿するには--data-binaryを使用します。

    • フォームフィールドの値をURLエンコードするには、--data-urlencodeを使用できます。

    • 複数の-dオプションはマージされます。例えば、-d name=daniel -d skill=lousyを使用すると、name=daniel&skill=lousyというPOSTデータが生成されます。

    • データが@で始まる場合、残りはデータを含むファイル名である必要があります。

  • -f, --fail

    • HTTPサーバーエラーで静かに(まったく出力しないで)失敗します。

    • これは主にスクリプトなどで失敗した試みをよりよく扱うために行われます。

    • HTTPサーバーがドキュメントの配信に失敗した場合、通常はエラードキュメントを返しますが、このフラグを使用するとcurlはそれを出力せず、エラー22を返します。

  • -F, --form <name=@file>

    • -F, --form <name=content>

      ユーザーが送信ボタンを押した状態のフォームをエミュレートします。これは、RFC 2388に従って、multipart/form-dataのContent-Typeを使用してデータをPOSTします。これにより、バイナリファイルなどのアップロードが可能になります。

      • データが@で始まる場合、残りはファイル名である必要があります。

      • ファイルからコンテンツ部分のみを取得するには、ファイル名の前に<を付けます。@<の違いは、@がファイルをファイルアップロードとしてPOSTに添付するのに対し、<はテキストフィールドを作成し、そのテキストフィールドの内容をファイルから取得する点です。

      例:パスワードファイルをサーバーに送信する場合。フォームフィールドの名前がpasswordで、入力が/etc/passwdの場合:

      
      curl -F password=@/etc/passwd www.mypasswords.com
      
  • -H "name: value"

    • --header "name: value"

      サーバーにHTTPリクエストを送信する際に含める追加ヘッダーです。任意の数の追加ヘッダーを指定できます。

      例:

      
      curl -H "User-Agent: yes-please/2000" https://example.com
      
  • -I

    • --head

      HTTPヘッダーのみを取得します!(HTTP/FTP/FILE)HTTPサーバーにはHEADコマンドがあり、これを使用してドキュメントのヘッダーだけを取得します。FTPまたはFILEファイルで使用すると、curlはファイルサイズと最終更新日時のみを表示します。

  • -k

    • --insecure

      このオプションは、curlが「安全でない」SSL接続と転送を行うことを明示的に許可します。すべてのSSL接続は、デフォルトでインストールされているCA証明書バンドルを使用して安全モードで試行されます。これにより、-k, --insecureを使用しない限り、「安全でない」と見なされるすべての接続が失敗します。(SSL

  • --limit-rate <speed>

    最大転送速度を指定します。この機能は、帯域幅を全て使い切らないようにしたい場合に便利です。

    指定された速度はバイト/秒で測定されますが、サフィックスを付けると単位が変更されます。kまたはKを付けるとキロバイト/秒、mまたはMはメガバイトgまたはGはギガバイト/秒になります。例:200K, 3m, 1G

  • -L, --location

    サーバーが要求されたページが別の場所に移動したことを報告した場合(Location: ヘッダーと3XXレスポンスコードで示されます)、このオプションはcurlが新しい場所でリクエストを再実行するようにします。

  • -m <seconds>

    • --max-time <seconds>

      操作全体に許可する最大時間を指定します。これにより、ネットワークが遅かったりリンクが切れたりしてバッチジョブが何時間もハングするのを防ぐのに役立ちます。--connect-timeoutオプションも参照してください。

  • -o <file>

    • --output <file>

      標準出力ではなくファイルに出力を書き込みます。{}[]を使用して複数のドキュメントを取得する場合、ファイル指定子に#と数字を付けることで、取得するURLの現在の文字列に置き換えられます。以下のように:

      
      curl https://{one,two}.site.com -o "file_#1.txt"
      

      または、複数の変数を使用して:

      
      curl https://{site,host}.host[1-5].com -o "#1_#2"
      

      このオプションは、取得するURLの数だけ何度でも使用できます。

      ローカルディレクトリを動的に作成するには、--create-dirsオプションも参照してください。出力を標準出力に強制するには、ファイル名を-に指定します。

  • -O

    • --remote-name

      リモートファイルと同じ名前のローカルファイルに出力を書き込みます。(リモートファイルのファイル部分のみが使用され、パスは切り捨てられます。)保存に使用するリモートファイル名は、指定されたURLから抽出されます。従って、ファイルは現在の作業ディレクトリに保存されます。

  • -s

    • --silent

      サイレントモード。進行状況メーターやエラーメッセージを表示しません。

  • -S, --show-error

    -s, --silentと一緒に使用すると、curlが失敗した場合にエラーメッセージを表示します。このオプションはグローバルであり、-:, --nextの各使用に対して指定する必要はありません。

    例:

    
      curl --show-error --silent https://example.com
    
  • --trace-ascii <file>

    送受信するすべてのデータのフルトレースダンプを記述情報と共に指定された出力ファイルに有効にします。ファイル名に"-"を使用すると、出力が標準出力に送られます。このオプションは、以前に使用した-v, --verbose--trace-asciiを上書きします。このオプションが複数回使用された場合、最後のものが使用されます。

  • -T <file>

    • --upload-file <file>

      指定されたローカルファイルをリモートURLに転送します。指定されたURLにファイル部分がない場合、curlはローカルファイル名を追加します。最後のディレクトリに末尾のスラッシュ/を付けて、curlにファイル名がないことを証明する必要があります。そうしないと、最後のディレクトリ名がリモートファイル名として認識されます。ファイル名に"-"を使用すると、標準入力を使用します。

      コマンドラインで各URLに対して1つの-Tを指定できます。各-T + URLペアは、アップロードする内容と場所を指定します。curl-T引数の「グロビング」をサポートしており、以下のように複数のファイルを1つのURLにアップロードできます:

      
      curl -T "{file1,file2}" https://www.uploadtothissite.com
      

      または:

      
      curl -T "img[1-1000].png" ftp://ftp.picturemania.com/upload/
      
  • -u <user:password>

    • --user <user:password>

      サーバー認証に使用するユーザー名とパスワードです。-n, --netrcおよび--netrc-optionalを上書きします。

      • ユーザー名だけを指定すると(コロンを入力しない場合)、curlはパスワードの入力を求めます。

      • SSPI対応のcurlバイナリを使用してNTLM認証を行う場合、このオプションにシングルコロン"-u :"を指定することで、環境からユーザー名とパスワードを取得するようにcurlに指示できます。

      • このオプションが複数回使用された場合、最後のものが使用されます。

  • -v

    • --verbose

      詳細な出力を表示します。主にデバッグに役立ちます。

  • -w, --write-out <format>

    完了した成功した操作の後に標準出力に表示する追加情報を定義します。フォーマットは、プレーンテキストと任意の数

このページは、完全なオプションの大幅に略された選択です。リターンコードを含む詳細については、Run Man Curl

Curlは強力なツールです。責任を持って、定期的に、同じWebサイトからファイルを繰り返しダウンロードすると、IPが自動的にフラグを立てられ/ブロックされる可能性があります。

エラーが発生しない場合、それ以外の場合はゼロではありません。

Webページを取得してターミナルで表示し、ヘッダー情報を表示するには、-include(-i)オプションを使用します。

$ curl https://ss64.com

$ curl https://ss64.com -i

Webページを取得してファイルに保存します。

$ curl https://ss64.com/bash/ -o ss64.html

Webページ、またはそのリダイレクトされたターゲットを取得します。

$ curl ss64.co/bash/

$ curl ss64.co/bash/ - ロケーション

データ転送速度を1キロバイト/秒に制限します。

$ curl https://ss64.com/bash/ - limit-late 1k -o ss64.html

Webページを取得して、特定のユーザーエージェントHTTPヘッダーを渡します(一部のWebサイトはこれを使用して使用するブラウザをスニッフィングします):

$ curl -a "Mozilla Firefox(72.0)" https://example.com

プロキシサーバーからダウンロード:

$ curl -x proxy.example.com:3128 https://ss64.com/bash/

関連するLinuxコマンド

HTTPIE -HTTPサーバーのテストとデバッグのためのHTTPコマンド。

FTP-ファイル転送プロトコル

CURLプロジェクトのダウンロード - 他のパッケージ化されたコピーよりも最新の公式ソース。

https://ss64.com/bash/curl.html