- <url>
- リクエスト先のURLを指定します。URLの構文はプロトコル依存となります。複数のURLを指定すると順にリクエスト送信とレスポンス受信を行います。
- URLには「{ }」および「[ ]」を含めることができます。(--globoff で無効化できます。)
- 前者は「{foo,bar}」とすると「foo および bar」を意味します。例えば「https://www.example.com/{foo,bar}/baz」とすると、「https://www.example.com/foo/baz」および「https://www.example.com/bar/baz」へのリクエストを行います。
- 後者は「[1-3]」とすると「1 および 2 および 3」を意味します。例えば「https://www.example.com/[0-4].png」とすると、「https://www.example.com/0.png」「https://www.example.com/1.png」...「https://www.example.com/4.png」へのリクエストを行います。
- URLに「protocol://」が含まれていない場合、Curl は残りのパートから自動的に推定してリクエストを行います(通常は HTTP としますが、例えば「ftp.」で始まっていれば FTP として扱います)。なお、--proto-default オプションを指定することで省略時のプロトコルを指定することができます。
- --abstract-unix-socket <file>
- Protocols: HTTP
- Category: connection
- [Windows 10/11 版] このオプションは使用できません。(Curl 側が未サポート)
- 接続先を指定の Abstract Unix Domain Socket ファイルとします。(--unix-socket の抽象ソケット版です。)
- --anyauth
- Protocols: HTTP
- Category: http proxy auth
- HTTP 通信において、Curl が認証方式を自動判別するようにします。この場合、最初の通信で認証が必要エラー(401)を得たときに、そのレスポンスからどの認証方式を使うか判定することになります。
- このオプションを使う場合は --user オプションも併せて使用する必要があります。
- なお、認証方式が分かっている場合は、--basic, --digest, --ntlm, --negotiate の各オプションで最初から認証を行う形にすることができます(最初のいわゆる「試し通信」をしなくて済みます)。
- プロキシサーバーに対して適用したい場合は --proxy-anyauth を使用します。
- --append
-a
- Protocols: FTP SFTP
- Category: ftp sftp
- FTP および SFTP において、ファイルをアップロードする際にファイルを上書きするのではなく追加書き込みをするようにします。(ファイルが存在しなかった場合は新規に作成されます。)
- なお、OpenSSH などの一部の SFTP サーバーでは対応していない場合があります。
- --basic
- Protocols: HTTP
- Category: auth
- HTTP 通信において BASIC 認証を用いるよう指定します。Curl はデフォルトでは BASIC 認証を利用するため、(--user オプションさえ付ければ)明示的に --basic を付ける必要はありませんが、設定ファイルなどで既に別の認証方式(--digest, --ntlm, --negotiate)が指定されている場合は、明示的に --basic を後から付けることで BASIC 認証を利用することができます。
- プロキシサーバーに対して適用したい場合は --proxy-basic を使用します。
- --ca-native
- Protocols: TLS
- Category: tls
- [Windows 10/11 版] このオプションは無視され、既定処理としてWindowsが持つ証明書ストアが使用されます。(libcurl ビルド時に使った SSL ライブラリでは対応していないため非対応)
- [curl 8.2.0 以降] TLS 認証時に使う証明書をOSが保持しているものを使うように指定します。既定ではファイルやディレクトリ(--cacert や --capath などで指定可)から取得されますが、このオプションによりそれをOSから取得させるようにすることができます。
- --cacert <certfile>
- Protocols: TLS
- Category: tls
- [Windows 10/11 版] このオプションは無視され、既定処理としてWindowsが持つ証明書ストアが使用されます。(libcurl ビルド時に使った SSL ライブラリでは対応していないため非対応)
- TLS 認証時に使う(信頼済みの)証明書のセットを持つファイルを指定します。証明書チェーンを検証した結果、このファイルに指定した証明書に到達しなかった場合は認証失敗としてエラー終了します。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --capath <dir>
- Protocols: TLS
- Category: tls
- [Windows 10/11 版] このオプションは無視されます。(libcurl ビルド時に使った SSL ライブラリでは対応していないため)
- TLS 認証時に使う(信頼済みの)証明書データのファイルが1つ以上格納されたディレクトリを指定します。ディレクトリは「:」(コロン)区切りで複数指定することができます。このオプションを使用した場合、既定のパスは使用されません。
- なお、OpenSSL が使用された Curl である場合は、ディレクトリに含まれるファイルは OpenSSL の
c_rehash
ツールにて生成されたものである必要があります。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --cert <certificate>[:<password>]
-E<certificate>[:<password>]
- Protocols: TLS
- Category: tls
- [Windows 10/11 版] このオプションは無視されます。(libcurl ビルド時に使った SSL ライブラリでは対応していないため)
- TLS 認証時に使うクライアント認証のファイルを指定します。「:」(コロン)に続けてパスワードを指定しますが、指定しなかった場合はターミナル上でパスワードの入力を求められます。(空のパスワードを指定する場合は「:」のみ指定します。) なお、パスワードは --pass オプションを使って指定することもできます。
- なお、証明書の形式は既定では PEM が使用されますが、--cert-type オプションで変更できます。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- [curl 7.70.0 以降][Windows (Schannel) 版] <certificate> に P12/PFX のファイルを指定することができます(この際、--cert-type には「P12」を指定します)。
- --cert-status
- Protocols: TLS
- Category: tls
- [Windows 10/11 版] このオプションは使用できません。(libcurl ビルド時に使った SSL ライブラリでは対応していないため)
- TLS 認証時、証明書状態リクエスト(Certificate Status Request; OCSP stapling)を行います。このオプションを使用した場合、サーバーが対応していなかったり無効な応答を返したりなどをした場合、認証失敗扱いとなります。
- --cert-type <type>
- Protocols: TLS
- Category: tls
- [Windows 10/11 版] このオプションは無視されます。
- --cert オプションで指定する証明書の形式を PEM, DER, ENG, P12 から指定します。この指定が無かった場合は PEM が使用されます。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --ciphers <list-of-ciphers>
- Protocols: TLS
- Category: tls
- [Windows 10 版] このオプションは利用できず無視されます(curl 7.61.0 以降/Windows 11 版で利用可能)。
- TLS 認証時に使う暗号方式のリストを指定します。指定可能な暗号方式は libcurl ビルド時に使った SSL ライブラリに依存します。詳しくは公式ドキュメントの SSL ciphers をご覧ください。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --compressed
- Protocols: HTTP
- Category: http
- [Windows 10/11 版] このオプションは使用できません。(libz が機能に含まれていないため)
- HTTP 通信時、レスポンスを圧縮されたデータにするようにリクエストします。(標準出力等にレスポンスを出力する際は --raw オプションが無ければ解凍済みデータを出力します。)
- --config <file>
-K<file>
- Category: curl
- 「設定ファイル」を指定します。既定では決まったパスを検索して存在する「.curlrc」ファイル([Windows] 「_curlrc」ファイル)を読み込み使用しますが、このオプションを使用することでそれ以外のファイルを使うことができます。「設定ファイルについて」をご覧ください。
- このオプションは複数回指定することができます。(その場合すべてのファイルが読み込まれます。)
- --connect-timeout <seconds>
- Category: connection
- 接続時のタイムアウト時間を指定します。--max-time オプションと異なり、接続時の待機時間のみが対象となります。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --connect-to HOST1:PORT1:HOST2:PORT2
- Category: connection
- 指定のホスト・ポートへの接続を別のホスト・ポートへの接続に置き換えます。ホスト HOST1 とポート番号 PORT1 への「接続」をすべてホスト HOST2 とポート番号 PORT2 への接続としますが、SSL 接続の証明書認証時などに使われるホスト名/ポート番号のペアは置き換えられません(そのため、SSL/TLS 接続での検証に失敗する可能性があります)。
- HOST1 および PORT1 は空にすることができます(「::HOST2:PORT2」)。その場合、あらゆるホスト名・ポート番号への接続を HOST2・PORT2 に置き換えます。一方、HOST2 および PORT2 も空にすることができ(「HOST1:PORT1::」)、その場合は HOST1・PORT1 への接続は置き換えないという指定となります。
- このオプションは複数回指定することができます。(複数のホスト・ポートのペアをそれぞれ別のホスト・ポートに置き換えることができます。)
- --continue-at <offset>
-C<offset>
- Category: connection
- ファイル転送(送信または受信)を途中のバイトから始めます。<offset> には(0 を先頭とした)何バイト目から始めるかを示すバイト数を指定します。このオプションを FTP でのアップロード処理で使用する場合、SIZE コマンドを利用しません。
- なお、レスポンスを途中から取得してファイルに出力する場合に、出力先のファイルが既に存在している場合は、既存のデータをそのままに「追加書き込み」が行われます。
- --cookie <data>
-b<data>
- Protocols: HTTP
- Category: http
- HTTP 通信においてリクエストに含める Cookie を指定します。<data> は「NAME=VALUE」の形式を指定するか Cookie データを持つファイル名を指定します(「=」文字が含まれていない場合はファイル名として扱われます)。
- <data> にファイル名を指定した場合、ファイルは「入力」として扱われます。書き込みを行いたい場合は --cookie-jar オプションを利用します(入出力できるよう両方同時に指定します)。
- Cookie データを持つファイルの形式は「Set-Cookie: 」ヘッダーを1行ずつ記述したデータか、Netscape/Mozilla Cookie ファイルフォーマットである必要があります。詳しくは公式マニュアルの「HTTP Cookies」をご覧ください。
- このオプションは複数回指定することができます。(複数の Cookie を指定することができます。)
- --cookie-jar <filename>
-c<filename>
- Protocols: HTTP
- Category: http
- HTTP 通信においてサーバーがレスポンスに含めた Set-Cookie ヘッダーを元に、Cookie データを指定のファイル(<filename>)に保存します。このファイルは次回以降の Curl で --cookie オプションの引数として指定することができます。
- なお、ファイルへの書き込みが上手くいかなかった場合でも、Curl はエラー終了せず、エラー出力もしません。(--verbose オプションで warning 出力を出すことは出来ます。)
- このオプションが複数回指定された場合、最後に指定されたファイルに出力されます。
- --create-dirs
- Category: curl
- --output オプションにディレクトリ名が含まれている場合、必要に応じてそのディレクトリも作成します。ディレクトリは Unix 系システムにおいては 0750 のモード(アクセス権)で作成されます。
- なお、FTP/SFTP においてサーバー側のディレクトリを作成するには --ftp-create-dirs オプションを利用します。
- --create-file-mode <mode>
- Protocols: SFTP SCP FILE
- Category: sftp scp file upload
- [Windows 10/11 版] このオプションは実質効果がありません。(SFTP/SCP が使用できない、ファイル作成においては8進数パーミッションはWindowsで使用されないため)
- [curl 7.75.0 以降] ファイルを作成する際に設定する、ファイルのパーミッションを指定します。既定では「0644」(8進数の値)が使用されますが、<mode> に別の値を指定することでこれを変えることができます。
- --crlf
- Protocols: FTP SMTP
- Category: ftp smtp
- FTP および SMTP において、送信(アップロード)するデータの改行コード LF を CR-LF に置き換えます。
- --crlfile <file>
- Protocols: TLS
- Category: tls
- [Windows 10/11 版] このオプションは無視されます。
- TLS 通信において証明書失効リストのファイルを指定します。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --data <data>
-d<data>
- Protocols: HTTP MQTT
- Category: important http post upload
- HTTP において、POST リクエストする際のデータを指定します。データは
application/x-www-form-urlencoded
として送信されます。(multipart/form-data
として送信したい場合は --form オプションや --form-string オプションを使います。)
- <data> には原則として送信したいデータをそのまま指定しますが、「@」文字で始まる値を指定した場合(例:
@data
)、@ 文字より後ろの文字はファイル名として扱われ、そのファイルの中身を送信データとして扱われます。データがファイルに存在している場合は、@ 文字を使ってファイルを指定することによりデータを送信することができます。
- このオプションを使用してファイルから読み取ったデータを送信する場合、ファイルに含まれる改行文字(CRおよびLF)はすべてカットされて送信されます(コマンドラインで改行文字を含むデータを直接指定した場合は改行文字は削られません)。改行文字が削られるのを避けたい場合は --data-binary オプションを利用します。
- <data> が「@」文字で始まる場合は残りのデータがファイル名として扱われますが、ファイル名として扱われるのを避けたい、すなわち「@」で始まる値をそのまま送信したい場合は、--data-raw オプションを利用します。
- <data> に指定したデータ(ファイルを指定した場合も含む)はURLエンコードなど行われずそのまま送信されます。URLエンコードを行いたい場合は --data-urlencode オプションを利用します。
- このオプションは他の --data で始まるオプションも含めて複数回指定することができます。その場合、サーバーには各データを「&」で結合したデータが送信されます。例えば「-d a=b --data-raw @hoge=piyo」と指定した場合は「a=b&@hoge=piyo」というデータが送信されます。
- --data-ascii <data>
- Protocols: HTTP
- Category: http post upload
- このオプションは --data オプションの別名(同じオプション)として扱われます。
- (複数回指定可能である点も --data オプションと同じです。)
- --data-binary <data>
- Protocols: HTTP
- Category: http post upload
- このオプションは --data オプションと原則同じですが、改行文字(CRおよびLF)は削られません。--data オプションと原則同じであるため、このオプションを利用してもデータは
application/x-www-form-urlencoded
として送信されます。別の Content-Type で送信したい場合は、--header オプションで「Content-Type: application/octet-stream
」などと指定する必要があります。
- (複数回指定可能である点も --data オプションと同じです。)
- --data-raw <data>
- Protocols: HTTP
- Category: http post upload
- このオプションは --data オプションと原則同じですが、「@」文字を解釈しません。
- (複数回指定可能である点も --data オプションと同じです。)
- --data-urlencode <data>
- Protocols: HTTP
- Category: http post upload
- このオプションは --data オプションと似ていますが、データに対して一定の規則に従ってURLエンコード処理を行って送信処理を行います。URLエンコードは、<data> に指定された値が以下のパターンになっている場合にそれぞれ対応する処理を行います。
- 「=」文字を含まない場合(以下の3つに当てはまらない場合) … データ全体がURLエンコードされます。
- 「
name=value
」の形式の場合(value には「=」が入っても可) … value だけがURLエンコードされます。name はエンコードされないため、必要であれば事前にエンコードしておく必要があります。
- 「
@file
」形式の場合 … データが file で指定したファイルから読み込まれ、そのデータ全体がURLエンコードされます。
- 「
name@file
」形式の場合 … データが file で指定したファイルから読み込まれ、そのデータ全体がURLエンコードされた上で、(そのデータを <encdata> とすると)「name=<encdata>」として送信されます。name はエンコードされないため、必要であれば事前にエンコードしておく必要があります。
- (複数回指定可能である点は --data オプションと同じです。)
- --delegation <LEVEL>
- Protocols: GSS/kerberos
- Category: auth
- GSS-API を使った Kerberos での認証の際、認証情報の委譲に関して次の中から指定します。
none
- 委譲を許可しません。
policy
- (Realmポリシーとして) Kerberos サービスチケットに「OK-AS-DELEGATE」フラグが設定されている場合に限り委譲を許可します。
always
- 無条件で委譲を許可します。
- --digest
- Protocols: HTTP
- Category: proxy auth http
- HTTP 通信において Digest 認証を用いるよう指定します。設定ファイルやコマンドライン上で既に別の認証方式(--basic, --ntlm, --negotiate)が手前に指定されている場合は、それらを上書きして Digest 認証を利用することができます。
- --disable
-q
- Category: curl
- このオプションをコマンドラインの最初に指定した場合、.curlrc (Windows の場合は _curlrc) ファイルの読み込みを無効化します。.curlrc の検索については「設定ファイルについて」をご覧ください。
- --disable-eprt
- Protocols: FTP
- Category: ftp
- FTP において EPRT および LPRT コマンドの利用を無効化します。Curl は通常では EPRT → LPRT の利用を試み、利用できなかった場合 PORT コマンドを利用しますが、このオプションを指定した場合は直接 PORT コマンドを利用します。
- --eprt オプションは無効化した EPRT を有効化するオプションとなります。また、--no-eprt は --disable-eprt のエイリアスとなります。
- FTP 接続時に IPv6 を利用した場合、EPRT の利用が必須となるため、このオプションは何も効果のないオプションとなります。
- なお、このオプションはアクティブモードを無効化するものではありません。アクティブモードを無効化したい場合は --ftp-port オプションを指定しないようにするか、--ftp-pasv オプションを利用します。
- --disable-epsv
- Protocols: FTP
- Category: ftp
- FTP において EPSV コマンドの利用を無効化します。Curl は通常では EPSV の利用を試み、利用できなかった場合 PASV コマンドを利用しますが、このオプションを指定した場合は直接 PASV コマンドを利用します。
- --epsv オプションは無効化した EPSV を有効化するオプションとなります。また、--no-epsv は --disable-epsv のエイリアスとなります。
- FTP 接続時に IPv6 を利用した場合、EPSV の利用が必須となるため、このオプションは何も効果のないオプションとなります。
- なお、このオプションはパッシブ(Passive)モードを無効化するものではありません。パッシブモードを無効化したい場合は --ftp-port オプションを利用します。
- --disallow-username-in-url
- Protocols: HTTP
- Category: curl http
- [curl 7.61.0 以降] URLにユーザー名が含まれていた場合 Curl をエラー終了させます(終了コード 67)。URLが変数やファイルなど固定値ではないところから読み込まれる場合に便利です。
- --dns-interface <interface>
- Protocols: DNS
- Category: dns
- [Windows 10/11 版] このオプションは使用できません。(c-ares が使われていないため)
- DNSサーバーを利用して名前解決する際に使うネットワークインターフェイス名を指定します(--interface のDNSサーバー接続用)。
- このオプションは、Curl (libcurl) がDNSを利用する旨のビルドオプションを付けてビルドされた場合にのみ有効です。(現時点では c-ares を有効化している場合のみが該当します。)
- --dns-ipv4-addr <address>
- --dns-ipv6-addr <address>
- Protocols: DNS
- Category: dns
- [Windows 10/11 版] このオプションは使用できません。(c-ares が使われていないため)
- DNSサーバーを利用して名前解決する際に、ベースとなるローカルアドレスを指定します。(bind 時のアドレスとして使用されます。)
- このオプションは、Curl (libcurl) がDNSを利用する旨のビルドオプションを付けてビルドされた場合にのみ有効です。(現時点では c-ares を有効化している場合のみが該当します。)
- --dns-servers <addresses>
- Category: dns
- [Windows 10/11 版] このオプションは使用できません。(c-ares が使われていないため)
- ホスト名の名前解決に使用するDNSサーバーのアドレスを指定します。
- このオプションは、Curl (libcurl) がDNSを利用する旨のビルドオプションを付けてビルドされた場合にのみ有効です。(現時点では c-ares を有効化している場合のみが該当します。)
- --doh-cert-status
- Category: dns tls
- [Windows 10/11 版] このオプションは使用できません。(libcurl ビルド時に使った SSL ライブラリでは対応していないため)
- [curl 7.76.0 以降] DoH (DNS-over-HTTPS) サーバーに対する --cert-status オプションです。
- --doh-insecure
- Category: dns tls
- [curl 7.76.0 以降] DoH (DNS-over-HTTPS) サーバーに対する --insecure オプションです。
- --doh-url <url>
- Category: dns
- [curl 7.62.0 以降] 既定のホスト名解決処理の代わりに DNS-over-HTTPS (DoH) を使ってホスト名を解決します。<url> には DoH サーバーのURL(HTTPS)を指定します。
- [curl 7.76.0 以降] DoH サーバーに対する --insecure および --cert-status オプションとして --doh-insecure および --doh-cert-status オプションを利用することができます。
- --dump-module-paths
- Category: (なし)
- [Windows 版のみ] [curl 7.63.0 以降] Curl が実行されたときに読み込まれたDLLモジュールのパスを一覧で出力します。
- なお、このオプションは単独で指定する必要があります。
- --egd-file <file>
- Protocols: TLS
- Category: tls
- [Windows 10/11 版] このオプションは無視されます。(OpenSSL を使用していないため)
- [curl 7.84.0 以降] このオプションは廃止予定とされ、curl 7.84.0 以降では無視されます。
- 乱数生成に用いるEGD(Entropy Gathering Daemon)ソケットのファイル名を指定します。--random-file オプションで指定したファイル(指定がない場合は
/dev/urandom
などビルド時に指定されたファイル)が利用できない場合に使用されます。
- なお、現時点(少なくとも curl 7.55.1 から 7.81.0 のバージョン)では libcurl が OpenSSL を利用しているときのみこのオプションが使用され、かつ OpenSSL が既定で乱数ジェネレーターの初期化を行うため、それに成功したときはこのオプションは使用されません。
- --engine <name>
- Protocols: TLS
- Category: tls
- [Windows 10/11 版] リストアップされる名前が無いため、このオプションは実質使用できません。
- 暗号処理時に使うエンジンの名前を指定します(<name> に名前を指定します)。利用可能なエンジンはビルド時に決まっており、それ以外の名前を指定することはできません。また、リストにある名前でも実際には利用できない場合があります。
- なお、「--engine list」とオプションを指定して実行すると、利用可能なエンジンの名前をリストアップします(リストアップして即終了します)。
- --etag-compare <file>
- Protocols: HTTP
- Category: http
- [curl 7.68.0 以降] 指定のファイルに書かれた ETag をサーバーに送信し、 ETag が一致した場合は「変更なし」レスポンス(ステータスコード 304)を受け取るようにします。<file> にファイルを指定しますが、正確な結果を得るには、このファイルは ETag が書かれた1行だけのテキストファイルである必要があります(--etag-save を使うことでこのテキストファイルを作ることができます)。なお、ETag は「If-None-Match」ヘッダーで送信されます。
- --etag-save <file>
- Protocols: HTTP
- Category: http
- [curl 7.68.0 以降] サーバーのレスポンスに含まれる ETag を指定のファイル(<file> に指定)に保存します。サーバーレスポンスに ETag が含まれない場合は空のファイルが作成されます。作成したファイルは --etag-compare で使うことができます。
- --expect100-timeout <seconds>
- Protocols: HTTP
- Category: http
- HTTP において、ステータスコード 100 (Continue) のレスポンスを受けたときの最大待機時間を指定します。<seconds> には時間を秒単位で指定します(小数も指定できます)。既定では 1 秒待機を行います。なお、待機時間を経過した場合は「(全)レスポンスを受信した」扱いで処理が進められます。
- --fail
-f
- Protocols: HTTP
- Category: important http
- HTTP においてエラーのステータスコードが返された場合、レスポンスを出力せずに終了コード 22 で終了させるようにします。通常ではエラーのステータスコードでもレスポンスがあるため、Curl はそれを出力して終了コード 0 で処理を完了します。このオプションを利用することで、主にスクリプト/バッチファイルで「エラーレスポンスをエラー」と扱いやすくすることができます。
- --fail-early
- Category: curl
- 複数のURL指定がある場合などで処理が複数行われた場合、途中で処理に失敗した場合は以降の処理を継続しないようにします。既定では、(--fail オプションの有無にかかわらず)失敗した場合でも次の処理を進めます(かつその処理が成功した場合は終了コードが 0 となります)。
- なお、このオプションを指定しても --fail オプションを指定したことにはなりません(必要に応じて別途指定する必要があります)。また、--fail を指定していない場合はステータスコードがエラーであるケースが失敗扱いにならないので、--fail-early が指定された状態で途中でエラーレスポンスが得られたとしても処理が続行されます。
- このオプションはグローバルオプションとなります(URLごとに指定する必要はなく、--next オプションの有無にかかわらず処理全体に有効となります)。
- ※ --fail はグローバルオプションではない(URLごとに指定する必要がある)ため、併用する場合には注意する必要があります。
- --fail-with-body
- Protocols: HTTP
- Category: http output
- [curl 7.76.0 以降] HTTP においてエラーのステータスコードが返された場合、レスポンスを出力せずに終了コード 22 で終了させるようにしますが、--fail と異なりレスポンスのコンテンツ(body)を出力します。--output などを組み合わせることでエラーレスポンスをファイルに保存することができます。
- --false-start
- Protocols: TLS
- Category: tls
- [Windows 10/11 版] このオプションは使用できません。
- SSL/TLS 通信時に「False start」モードの利用を試みます。「False start」はハンドシェイク処理においてサーバーの Finish メッセージを検証する前にメインデータ送信処理を行うことで、通信回数を省略することを意図する処理です。
- このオプションは現時点では libcurl のTLS処理に NSS または Secure Transport (iOS 系や OS X 系) が利用されている場合にのみ利用可能です(--version で確認できます)。
- --ftp-account <data>
- Protocols: FTP
- Category: ftp auth
- FTP においてユーザー認証後(ユーザー名とパスワードを送信後)に ACCT コマンドでデータを送るように指定します。主に FTP プロキシ(ファイアウォール)でプロキシのパスワードを送信する際に利用されます。
- --ftp-alternative-to-user <command>
- Protocols: FTP
- Category: ftp
- FTP において USER コマンドと PASS コマンドの送信に失敗した場合、追加で(代わりに)送るコマンドを指定します。一部の FTPS では「SITE AUTH」をこのオプションで指定することでクライアント認証の証明書を代わりの認証情報として使用させることができます。
- --ftp-create-dirs
- Protocols: FTP SFTP
- Category: ftp sftp curl
- FTP および SFTP においてサーバーにファイルを送信する際、アップロード先に不足するディレクトリの作成を行います(既定ではディレクトリが存在しない場合アップロードに失敗します)。
- ファイルを受信する際にローカル側のディレクトリを作成したい場合は --create-dirs オプションを使用します。
- --ftp-method <method>
- Protocols: FTP
- Category: ftp
- FTP において(URLに含まれる)ファイルへの到達方法を以下から指定します(<method> に以下のいずれかを指定)。
multicwd
- (既定の方法) ファイルがあるディレクトリの階層ごとに「CWD」コマンドを発行し、到達したら目的のコマンドを実行します。階層が深い場合 CWD のコマンド回数が多くなるため処理は遅くなりますが、古いRFCである RFC 1738 で推奨されている方法になります。
singlecwd
- ファイルがあるディレクトリ名全体を使って1回だけ「CWD」コマンドを発行し、到達したら目的のコマンドを実行します。
nocwd
- 「CWD」コマンドを使わず、目的のコマンドにおけるファイル名をフルパス(絶対パス)で指定します。コマンド数が最も少ない分速くなりますが、古いFTPサーバーでは対応していない可能性があります。
- --ftp-pasv
- Protocols: FTP
- Category: ftp
- FTP においてパッシブ(Passive)モードを利用するように指定します。Curl は既定でパッシブモードを利用するためこのオプションを明示的に使用する必要はありませんが、--ftp-port オプションが既に指定されている場合に明示的にそれを打ち消してパッシブモードを使いたい場合に利用することができます(手前で指定された --ftp-port オプションを打ち消します)。
- このオプションが複数回指定された場合は、最初に指定された分が有効になります。手前で指定された --ftp-port オプションを打ち消すために指定できますが、このオプションをさらに打ち消したい場合は(追加で) --ftp-port オプションを指定する必要があります。
- パッシブモード利用時は EPSV コマンドを送信し、利用できなかった場合には代わりに PASV コマンドを送信します。EPSV コマンドを送信したくない(最初から PASV を使いたい)場合は --disable-epsv オプションを利用します。
- --ftp-port address[:port]
-Paddress[:port]
- Protocols: FTP
- Category: ftp
- FTP においてアクティブモード(パッシブモードではないモード)を利用するように指定します。address にはネットワークインターフェイス名(Windows 版では利用不可)、IPアドレス、ホスト名、または「-」(ハイフン)を指定します。(「-」を指定すると、Curl がコントロール接続を行っている通信の接続元(自分)と同じIPアドレスを利用します。)
- address に続けて「:port」と、「『:』(コロン) + ポート番号」を指定すると、アクティブモードで使用するポート番号を指定(限定)することができます。ポート番号をダイレクトに指定した場合はその番号のみを、「50000-59999」のように「-」で最小値と最大値を繋げた値を指定すると、その範囲に入るポート番号を使用します。なお、「0」を指定するか「:port」自体を省略した場合は、空きポート番号を自動的に検索して利用します。
- アクティブモード利用時は EPRT コマンドを送信し、利用できなかった場合には代わりに PORT コマンドを送信します。EPRT コマンドを送信したくない(最初から PORT を使いたい)場合は --disable-eprt オプションを利用します。
- ※ address に IPv6 アドレスを指定する場合は「[ ]」で囲む必要があります。
- --ftp-pret
- Protocols: FTP
- Category: ftp
- FTP において PASV や EPSV の前に PRET コマンドを送信するようにします。一部の FTP サーバーで必要になります。
- --ftp-skip-pasv-ip
- Protocols: FTP
- Category: ftp
- FTP において、PASV コマンドに対して受け取った情報にあるIPアドレスを使用せず、代わりに Curl がコントロール接続を行っている通信の接続先のIPアドレスを利用します。
- なお、このオプションは curl 7.74.0 以降では既定で有効になっています。
- このオプションは PASV コマンドに対してのみ関係するため、EPSV や EPRT、PORT コマンドを利用した場合は効果を持ちません。
- --ftp-ssl-ccc
- Protocols: FTP
- Category: ftp tls
- FTP においてSSL/TLSを使う場合、ユーザー認証後に CCC (Clear Command Channel) コマンドを送るように指定します。CCC コマンドが受け付けられると、以降のコマンド送受信は暗号化なし(平文)で行われるようになり、主に NAT ルーターが必要に応じて(主に PORT/EPRT コマンドの)処理を修正できるようになります。(ただし Curl は既定ではパッシブモードを利用します。アクティブモードを使う場合は --ftp-port オプションを指定します。)
- CCC では passive モード(CCC のレスポンスを受け取ってもシャットダウン処理は行わず、サーバー側がシャットダウン処理をするのを待つ)を利用します。このモードを変更するには --ftp-ssl-ccc-mode オプションを利用します。
- --ftp-ssl-ccc-mode <mode>
- Protocols: FTP
- Category: ftp tls
- [Windows 10/11 版] このオプションは無視されます。
- --ftp-ssl-ccc オプションを指定した際、暗号化処理を閉じるモードを指定します。<mode> には以下のモードを指定します。
active
- CCC のレスポンスを受け取ったら自ら SSL シャットダウン処理を行い、サーバーからの応答を待ちます。
passive
- CCC のレスポンスを受け取ってもシャットダウン処理は行わず、サーバー側がシャットダウン処理をするのを待ちます。
- このオプションは現時点(curl 7.81.0)では一部のSSLライブラリ(OpenSSL, GnuTLS, Secure Transport)を利用した Curl でのみ有効です。
- --ftp-ssl-control
- Protocols: FTP
- Category: ftp tls
- FTP 接続にSSL/TLS通信を利用します(ftps)。ただし暗号化はコントロール通信にのみ利用し、データ通信(LISTやRECVなど)に対しては通常の接続とします。サーバーがSSL/TLSの通信に対応していない場合は失敗します。
- --get
-G
- Category: http upload
- HTTP においてこのオプションを利用すると、--data オプションなどでデータを指定した場合でも GET リクエストでデータを送信します。この場合、データは Query String としてURLの後ろに「?」文字とともに付加されます。(--head オプションをともに指定した場合は GET ではなく HEAD を Query String 付きでリクエストします。)
- このオプションが複数回指定された場合は、最初に指定された分のみが有効になります。
- ※ 指定されたURLに既に「?」が含まれている場合は「&」とともにデータが結合されます。
- --globoff
-g
- Category: curl
- URLにおける glob 処理を行わないようにします。有効である場合、<url> に記載の「{ }」や「[ ]」文字を含むURL解釈が行われます。
- なお、標準規格を順守する場合、本来は「{ }」や「[ ]」の文字は % などでエンコードする必要があります。(--globoff や -g を使えばエンコードせずともリクエストは可能ですが、サーバー側がこれらを解釈できる必要があります。)
- --haproxy-protocol
- Protocols: HTTP
- Category: http proxy
- [curl 7.60.0 以降] 接続時に HAProxy の「PROXY」ヘッダー(version 1)を送信します。クライアント側(Curl 利用側)のIPアドレスやポート番号をサーバーに伝えるために利用します。
- --happy-eyeballs-timeout-ms <millisec>
- Category: connection
- [curl 7.59.0 以降] IPv6 で接続を行いつつ、<millisec> (ミリ秒)の時間内に最初のレスポンスが得られなければ IPv4 で接続を行います(curl における Happy Eyeballs)。なお、指定しない場合は 200(ミリ秒) が使用されます。
- --head
-I
- Protocols: HTTP FTP FILE
- Category: http ftp file
- HTTP, FTP, FILE においてヘッダーのみを取得します。
- HTTP の場合は HEAD リクエストを使ってレスポンスを取得します。
- FTP および FILE においては、ファイルサイズと最終更新日時のみを出力します。
- --help
-h
- Category: important curl
- Curl コマンドラインで使用できるオプション一覧を含む使い方を表示します。
- [curl 7.73.0 以降] 引数として <category> を受け付けるようになっています。<category> を指定すると、そのカテゴリーに関するオプションのみが一覧で表示されます。また、--help 単体で指定した場合は代表的なオプションのみが表示されます。(すべてを表示する場合は <category> に
all
を指定します。)
- --hostpubmd5 <md5>
- Protocols: SFTP SCP
- Category: sftp scp
- ※ [Windows 10/11 版] scp および sftp をサポートしていないため、このオプションは実質利用できません。
- 接続先が提供する公開鍵の MD5 チェックサムを指定します。<md5> には32文字の16進数(128ビットデータ)を指定します。この値が実際の公開鍵から算出される値と異なる場合、接続を拒否します。
- --http1.0
-0
- Protocols: HTTP
- Category: http
- (
-0
はハイフンと数字の 0)
- HTTP 通信において HTTP バージョン 1.0 を使っての通信を試みます。このオプションを利用したときにサーバーが HTTP/1.1 でレスポンスした場合でも特にエラーにはなりません。
- このオプションが指定された場合、それまでに指定された --http1.1、--http2、--http2-prior-knowledge の各オプションを上書きします。
- --http1.1
- Protocols: HTTP
- Category: http
- HTTP 通信において HTTP バージョン 1.1 を使っての通信を試みます。このオプションを利用したときにサーバーが HTTP/1.0 でレスポンスした場合でも特にエラーにはなりません。
- このオプションが指定された場合、それまでに指定された --http1.0、--http2、--http2-prior-knowledge の各オプションを上書きします。
- --http2
- Protocols: HTTP
- Category: http
- [Windows 10/11 版] このオプションは使用できません。
- HTTP 通信において HTTP バージョン 2 を使っての通信を試みます。HTTP の場合は Upgrade ヘッダーを使い、HTTPS (SSL/TLS) の場合は ALPN を使って HTTP/2 を利用できるかどうかを問い合わせてから HTTP/2 を利用します。利用できない場合は HTTP 1.1 が利用されます。
- なお、明示的な指定がない限り Curl は(利用可能だった場合) HTTP/2 を利用します。
- このオプションが指定された場合、それまでに指定された --http1.0、--http1.1、--http2-prior-knowledge の各オプションを上書きします。
- --http2-prior-knowledge
- Protocols: HTTP
- Category: http
- [Windows 10/11 版] このオプションは使用できません。
- HTTP バージョン 2 を使っての通信を行いますが、--http2 オプションと異なり Upgrade ヘッダーや問い合わせを利用せず、直接 HTTP/2 を利用して通信します。そのため、サーバーが HTTP/2 に対応していない場合は通信に失敗します。
- --http3
- Protocols: HTTP
- Category: http
- [Windows 10/11 版] このオプションは使用できません。
- [curl 7.66.0 以降] HTTP 通信において HTTP バージョン 3 (HTTP/3) を使っての通信を試みます。QUIC を使った接続となりますが、接続に失敗した場合は HTTP2 以下のバージョンを利用します。
- なお、HTTP/3 においては常に TLS を利用するため、URLは https であることが必要です。
- このオプションが指定された場合、それまでに指定された --http1.0、--http1.1、--http2、--http2-prior-knowledge の各オプションを上書きします。
- ※ HTTP/3 サポートは curl 8.1.2 時点では experimental (実験) 扱いであるため、ビルド時に明示的に有効化する必要があります。
- --http3-only
- Protocols: HTTP
- Category: http
- [Windows 10/11 版] このオプションは使用できません。
- [curl 7.88.0 以降] HTTP 通信において HTTP バージョン 3 (HTTP/3) を使っての通信を試みますが、--http3と異なり QUIC を使った接続に失敗した場合はそのまま失敗扱いとします。
- ※ HTTP/3 サポートは curl 8.1.2 時点では experimental (実験) 扱いであるため、ビルド時に明示的に有効化する必要があります。
- --ignore-content-length
- Protocols: HTTP FTP
- Category: http ftp
- HTTP 通信において、レスポンス受信時に Content-Length ヘッダーを無視して(受信データが末尾に到達するまで)受信を行います。サーバーが古く Content-Length を正しくレスポンスしない場合(主に2GiBを超えたとき)に有用です。
- FTP 通信においては、データサイズ取得のための RETR コマンドを送信しません。
- このオプションは、Curl のコアである libcurl が「hyper」を使ってビルドされた場合は使用できません。(Windows 10 版は該当しません。)
- --include
-i
- Category: important verbose
- Curl によるレスポンス出力にレスポンスヘッダーも含めます。
- リクエストヘッダーを表示したい場合は --verbose オプションを利用します。また、レスポンスヘッダーを別のファイルに出力したい場合は --dump-header オプションを利用します。
- --insecure
-k
- Protocols: TLS
- Category: tls
- HTTPS 通信などでSSL/TLSの認証を行った際に、証明書の発行元が不明であるなどセキュリティ上問題がある場合でも通信を続行します。
- ※ 特別な証明書を使う場合などは、通常 --cacert オプションで証明書ファイルを指定するなどで対応できますが、Windows 10 版ではOSのSSL処理を使用するため、それらのオプションによる特殊対応は利用できません。
- --interface <name>
- Category: connection
- 接続時に利用したいインターフェイス名を指定します。<name> には「eth0」などのネットワークインターフェイス名、またはネットワークインターフェイスに割り当てられたIPアドレスおよびホスト名を指定します。
- [Windows 10/11 版] <name> にはインターフェイス名を指定することはできませんが、IPアドレス・ホスト名を使うことは出来ます。
- --ipv4
-4
- Category: connection dns
- Curl がホスト名のアドレスを取得(解決)する際、必ず IPv4 のアドレスを使用するようにします。
- このオプションはそれまでに指定された --ipv6 オプションを上書きします。
- --ipv6
-6
- Category: connection dns
- Curl がホスト名のアドレスを取得(解決)する際、必ず IPv6 のアドレスを使用するようにします。
- このオプションはそれまでに指定された --ipv4 オプションを上書きします。
- --json <data>
- Protocols: HTTP
- Category: http post upload
- [curl 7.82.0 以降] 指定されたデータを JSON データとして POST 送信を行い、JSON データを受け取るためのヘッダーを付加します。このオプションは以下のオプションと等価です。
--data <data> --header "Content-Type: application/json" --header "Accept: application/json"
- なお、<data> に指定するデータは JSON データを指定しますが、Curl による JSON として正しいかなどの検証は行われません。
- <data> に指定するデータが「@」で始まる場合、続く文字列はファイル名として扱われます。すなわち、「@file」と指定することで送信するデータをファイルから読み込むことが可能です。また、「@-」とすると標準入力(STDIN)からデータを受け取ります。「@-」とパイプ「|」・入力リダイレクション「<」を組み合わせることでデータを受け渡すことができます。
- 等価なオプションの通り、Content-Type を --header オプションで指定することになるため、別の Content-Type を使用したい場合は --header オプションを後ろに付けることで対応できます。また、複数回「--json」を指定した場合はデータが結合されます(単純な文字列結合となります)。
- --junk-session-cookies
-j
- Protocols: HTTP
- Category: http
- --cookie オプションを使用してCookieを読み込む際、すべての「セッションCookie」を破棄(無視)します。Curl でCookie付きの接続を行う際に「新しいセッションで接続する」ようにする目的で使用します。
- --keepalive-time <seconds>
- Category: connection
- TCPソケットに設定する Keep-Alive の時間(通信が続いていることを確認する送受信処理の間隔)を指定します。Linux系では setsockopt 経由で TCP_KEEPIDLE と TCP_KEEPINTVL を使って、Mac OS Xでは setsockopt 経由で TCP_KEEPALIVE を使って、Windowsでは WSAIoctl 経由で SIO_KEEPALIVE_VALS を使って設定を行います。
- このオプションは --no-keepalive オプションが設定されている場合には効果を持ちません。
- --key <key>
- Protocols: TLS SSH
- Category: tls ssh
- [Windows 10/11 版] このオプションを利用する通信(SFTPなど)が利用できず、SSL通信でも利用されないため効果がありません。
- TLS での認証や SSH での認証に使う秘密鍵を指定します。SSH においては、このオプションが指定されなかった場合、「
~/.ssh/id_rsa
」「~/.ssh/id_dsa
」「./id_rsa
」「./id_dsa
」の順でファイルが検索され見つかったものが使用されます。なお、秘密鍵に対するパスワードは --pass オプションで指定します。
- SSLライブラリとして OpenSSL が使用されている場合、かつ pkcs11 エンジンが利用可能である場合、<key> に「
pkcs11:
」で始まる PKCS#11 URI を指定することができます(PKCS#11 デバイスに存在する秘密鍵を指定することができます)。この場合、--engine が指定されていない場合は pkcs11 扱い、--key-type が指定されていない場合は ENG 扱いとなります。
- なお、TLS での認証に秘密鍵を使うことができるのは一部のSSLライブラリ(OpenSSL, NSS, Secure Transportなど)を使用している場合に限られます。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --key-type <type>
- Protocols: TLS
- Category: tls
- [Windows 10/11 版] このオプションを利用する通信(SFTPなど)が利用できず、SSL通信でも利用されないため効果がありません。
- --key オプションで指定する秘密鍵の形式を DER, PEM, ENG から指定します。このオプションを使用しなかった場合は原則として PEM として扱われますが、秘密鍵のデータが PKCS#11 の URI である場合(
pkcs11:
で始まる場合)は ENG として扱われます。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --krb <level>
- Protocols: FTP
- Category: ftp
- [Windows 10/11 版] このオプションは使用できません。
- FTP での認証プロセスに Kerberos 認証を利用します。具体的には「AUTH GSSAPI」を送信して認証を試みます。サーバーが対応していない場合は通常の(プレーンテキストを使った)認証を行います。
- --libcurl <file>
- Category: curl
- 他のオプションと組み合わせて使用することで、<file> で指定したファイルに「libcurl を使った同じ処理を行うC言語のソースコード」を出力します。
- なお、このオプションがあっても実際の通信処理は行われます。
- このオプションが複数回指定された場合、最後に指定されたファイルに出力されます。
- --limit-rate <speed>
- Category: connection
- アップロード・ダウンロードのスピードを制限します(最大値を指定します)。<speed> には1秒あたりのサイズをバイト単位で指定しますが、末尾に「K」「M」「G」を付けるとそれぞれキロバイト(キビバイト)・メガバイト(メビバイト)・ギガバイト(ギビバイト)の値となります。
- スピード制限は瞬間的な値を制御するわけではなく、平均速度が指定値を超えた場合に指定値に下がるまでダウンロード・アップロードを一時中断するといった処理になります。このオプションは帯域を占有したくない場合に有用です。
- なお、--speed-limit オプションと併用することができ、基本的にはそのオプションの中止処理が優先されます。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --list-only
-l (Lの小文字)
- Protocols: FTP POP3
- Category: ftp pop3
- FTP において、ディレクトリ内の一覧を取得する際に「名前のみ」を取得するようにします。通常では属性やファイルサイズなどの情報もリストに含まれますが、このオプションを使用することで他のツールなどで解析しやすい形で名前のみを取得することができます。なお、このオプションを使った場合はリストアップに LIST コマンドの代わりに NLST コマンドを使用します。(一部の FTP サーバーは NLST に対してサブディレクトリやシンボリックリンク等を含まず「ファイル」のみを返す場合があります。)
- POP3 においては、特定のメールを取得する際に RETR ではなく LIST コマンドを使って情報取得をするようにします。これは、サーバーに特定のメールが存在するかどうかのチェックとそのサイズがどのくらいになるかを問い合わせる目的で用いるのに適しています。なお、--request オプションと組み合わせることで、(--request で「UIDL」を指定することで)メッセージのユニークID(UID)を得ることができます。
- --local-port <num/range>
- Category: connection
- 接続時に使うローカル側のポート番号を指定(制限)します。<num/range> には番号を1つ指定するか、「from-to」形式で範囲を指定します(「1000-1999」なら1000から1999までの範囲を使う指定になります)。特定の事情により番号を制限したい場合に使いますが、このオプションを指定した場合、使用できる番号が限られることから接続確立時に失敗するケースが増える可能性があります。
- --location
-L
- Protocols: HTTP
- Category: http
- HTTP 通信において、レスポンスのステータスコードが 3xx で「Location」ヘッダーがあった場合、Location ヘッダーにあるURLに対して元のリクエストと同じリクエストを行います(リダイレクト)。--head オプションおよび --include オプションが指定されている場合、リダイレクト前のレスポンスのヘッダーも出力します。
- Curl は POST のリクエストに対して 301, 302, 303 のステータスコードを得た場合、リダイレクト先へのリクエストを GET で行います。それ以外の 3xx のステータスコードの場合はリクエストメソッドを変えずに同じリクエストを行います。ただし、--request オプションでリクエストメソッドが指定されている場合、リダイレクト後も指定のメソッドを使用します。
- リダイレクト前のリクエストに認証情報を含めていた場合、既定ではリダイレクト後には認証情報を含めずリクエストします。認証情報をリダイレクト後にも含めたい場合は --location-trusted オプションを使います。
- --location-trusted
- Protocols: HTTP
- Category: http auth
- --location オプションとほぼ同様ですが、リダイレクト前のリクエストに認証情報を含めていた場合、リダイレクト後にもその認証情報を含めてリクエストを行います。リダイレクトが信頼できる処理でない場合、未知のサーバーに認証情報を渡す=パスワードがそのサーバーに渡ってしまう、というリスクが発生するため、注意が必要です。
- --login-options <options>
- Protocols: IMAP POP3 SMTP
- Category: imap pop3 smtp auth
- IMAP, POP3, および SMTP においてログイン時のオプションを指定します。具体的には <options> に「AUTH=xxx」のオプションを指定することができます。
- なお、このオプションが指定されている場合、URL に含まれているオプションは上書きされます。URLにオプションを含める書式は RFC 2384 (POP3) や RFC 5092 (IMAP), IETF draft 'draft-earhart-url-smtp-00' (SMTP) を参照してください(いずれも「
<protocol>://<user>:<password>;<options>@<host>...
」の書式となります)。
- --mail-auth <address>
- Protocols: SMTP
- Category: smtp
- SMTP においてメッセージの認証アドレス(AUTHパラメーターに入れるアドレス)を指定します。
- --mail-from <address>
- Protocols: SMTP
- Category: smtp
- SMTP においてメールの送信者アドレスを指定します。
- --mail-rcpt <address>
- Protocols: SMTP
- Category: smtp
- SMTP において宛先アドレスを指定します。このオプションを複数回指定することで複数の宛先を指定することができます。
- メール送信時にこのオプションを指定した場合は、<address> は有効なメールアドレスである必要があります。一方、アドレス検証(VRFY コマンド)で指定した場合は、<address> はユーザー名または「ユーザー名 + ドメイン」である必要があります。また、メーリングリスト展開(EXPN コマンド)でこのオプションを指定した場合は、<address> にはメーリングリストの名前を指定する必要があります。
- ※ [Windows 10 版] 「curl --help」での説明では「Mail from this address」となっていますが「Mail to this address」の誤植です(後のバージョンで修正済み)。
- --manual
-M
- Category: curl
- [Windows 10/11 版] このオプションは使用できません。インターネット上のマニュアル(Manpage)などを参照する必要があります。
- Curl のマニュアルを出力します。(膨大な量になります。)
- --max-filesize <bytes>
- Category: connection
- ファイルのダウンロード時に適用するファイルの最大サイズを指定します。ファイルのサイズが取得できる状況下でそのサイズが <bytes> で指定したサイズを上回った場合、ファイルのダウンロードを行わず終了コード 63 でエラー終了します。
- <bytes> にはファイルサイズをバイト単位で指定しますが、末尾に「K」「M」「G」を付けるとそれぞれキロバイト(キビバイト)・メガバイト(メビバイト)・ギガバイト(ギビバイト)の値として指定できます。
- ※ ファイルサイズ上限は目的のファイルのサイズが事前に取得できた場合に限り適用されます。主に HTTP や FTP においてサイズが取得できなかった場合、ダウンロードはそのまま行われ、指定していたサイズを上回ってもダウンロードは完了するまで続行されます。
- --max-redirs <num>
- Protocols: HTTP
- Category: http
- HTTP における最大のリダイレクト回数を指定します。--location オプションを指定した際に(半無限ループなど)リダイレクトしすぎないようにするために指定します。なお、<num> に「-1」を指定した場合は無制限となります。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --max-time <time>
- Category: connection
- 全体の処理時間の最大(リミット)を秒単位で指定します。ここで指定した時間経過するとそのタイミングで処理を止めます。--connect-timeout と異なり、ダウンロード中の時間も含めた全体の時間をチェックします。そのため、予期せず通信速度が遅くなった場合への対策として使うことができます。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --negotiate
- Protocols: HTTP
- Category: auth http
- HTTP 通信において Negotiate (SPNEGO) 認証を用いるよう指定します。設定ファイルやコマンドライン上で既に別の認証方式(--basic, --digest, --ntlm)が手前に指定されている場合は、それらを上書きして Negotiate 認証を利用することができます。
- --netrc
-n
- Category: curl
- Curl が「.netrc」ファイルを使用するように指定します(Windows の場合は「_netrc」ファイルを使います)。.netrc ファイルは主にUnix系のFTP通信において事前に認証情報をファイルに記述しておき、実際の接続時にそのファイルから情報を読み取るようにする際に用いられます。(本サイトでは説明を省略します。)
- 「.netrc / _netrc」ファイルは環境変数 HOME に指定されたディレクトリから検索されますが、見つからない場合(Linux系の場合) getpwuid_r 関数または getpwuid 関数で得られる pw_dir (= ユーザーのホームディレクトリ)からファイルが検索されます。(Windows に対してはこの処理は無く、カレントディレクトリや USERPROFILE ディレクトリなどは使用されません。)
- [curl 7.84.0 以降] [Windows 版のみ] curl 7.84.0 以降では、環境変数 HOME が指定されていない場合は環境変数 USERPROFILE が使用されます。
- --netrc-file <filename>
- Category: curl
- --netrc とほぼ同様ですが、「.netrc / _netrc」ファイルからではなく、<filename> で指定したファイルから認証情報の取得を行います。
- このオプションは --netrc-optional オプションと共に使用することができ、その場合は「オプショナル」扱いにすることができます。
- このオプションはそれまでに指定された --netrc オプションを上書きします。
- --netrc-optional
- Category: curl
- --netrc とほぼ同様ですが、netrc ファイルからの読み取りを「オプショナル」とします。「オプショナル」では、netrc ファイルから認証情報を読み取れなかった場合、他のオプションやURLから得られる認証情報を利用するようにします。(逆に --netrc-optional を使用せずに --netrc や --netrc-file を使用した場合は、netrc ファイルから情報が得られなかった場合でも他のオプションやURLから得られる認証情報を使用しなくなります。)
- このオプションはそれまでに指定された --netrc オプションを上書きします。(ただし --netrc-file オプションは上書きしません。)
- --next
-: (ハイフンに「:」(コロン)を続ける)
- Category: curl
- オプションの分離を行います。URLごとに適用されるオプションについて、--next オプションが指定されるよりも前に指定されたオプションは、同じく --next オプションよりも前に指定されたURLに対して適用され、--next オプション以降に指定されたオプションは同様に --next オプション以降に指定されたURLに対して適用されます。
- --next オプション以降では、それまでに指定されたオプションのうち「グローバルオプション」以外が既定値にリセットされます。(「グローバルオプション」には --verbose, --trace, --trace-ascii, --fail-early の各オプションが該当します。)
- 例:
curl www1.example.com --next -d postthis www2.example.com
-- 「www1.example.com」を GET でリクエストした後、「www2.example.com」をデータ付きの POST でリクエストします。
- --no-alpn
- Protocols: HTTPS
- Category: tls http
- [Windows 10 版] curl 7.55.1 ではこのオプションはサポートされず無視されます。(Schannel ではサポートされていますが、他のビルドオプションなどによって有効になっていないようです。新しいバージョンでは使用できます。)
- HTTPS の TLS 通信において ALPN を使用しないようにします。既定では ALPN は使用するモードとなっており、特に libcurl が HTTP/2 通信を使用するかどうかを判断する際に用いられています。
- なお、このオプションは最初から「--no」が付いていますが、再度有効化したい場合は no を外して「--alpn」と指定することで有効化できます。
- --no-buffer
-N
- Category: curl
- レスポンスデータ出力時のバッファリングを無効化します。(既定ではバッファリングが有効化されています。)
- なお、このオプションは最初から「--no」が付いていますが、再度有効化したい場合は no を外して「--buffer」と指定することで有効化できます。
- --no-clobber
- Category: curl output
- [curl 7.83.0 以降] Curl が --output (-o), --remote-header-name (-J), --remote-name (-O) オプションの結果ファイルに出力する際、既にファイルが存在していた場合にそのファイルを上書きせず、ドット「.」と番号をファイル名に付け加えた新たなファイル名でファイルに保存します。ただし番号が「100」を超える場合はファイルを作成しません。
- なお、このオプションは最初から「--no」が付いていますが、再度有効化したい場合は no を外して「--clobber」と指定することで有効化できます。
- --no-keepalive
- Category: connection
- TCP における Keep-Alive 設定を無効化します。(既定では有効化しています。)
- なお、このオプションは最初から「--no」が付いていますが、再度有効化したい場合は no を外して「--keepalive」と指定することで有効化できます。
- --no-npn
- Protocols: HTTPS
- Category: tls http
- [Windows 10/11 版] このオプションはサポートされず無視されます。
- HTTPS の TLS 通信において NPN を使用しないようにします。既定では NPN は使用するモードとなっており、特に libcurl が HTTP/2 通信を使用するかどうかを判断する際に用いられています。(ただしサーバーが NPN そのものに対応していない可能性があります。)
- このオプションは現時点では SSL ライブラリに NSS が使用されている場合にのみ有効です。(NSS 利用時にのみ既定で NPN が使用されます。)
- なお、このオプションは最初から「--no」が付いていますが、再度有効化したい場合は no を外して「--npn」と指定することで有効化できます。
- --no-progress-meter
- Category: verbose
- [curl 7.67.0 以降] ファイル保存時などに表示される進捗表示(プログレスメーター)を非表示にします。--silent オプションでも進捗表示は表示されませんが、--silent では警告メッセージ等も出力されなくなるため、進捗表示「のみ」を非表示にしたい場合はこのオプションを使用します。
- なお、このオプションは最初から「--no」が付いていますが、再度有効化したい場合は no を外して「--progress-meter」と指定することで有効化できます。
- --no-sessionid
- Protocols: TLS
- Category: tls
- SSL/TLS 通信において、セッションの再利用を行わないようにします。「セッションの再利用」とは、主に同一ホスト・ポートへの接続が複数回行われる場合に、以前接続した状態を使いまわしてセッション確立を省略する処理を指します。
- なお、このオプションは最初から「--no」が付いていますが、再度有効化したい場合は no を外して「--sessionid」と指定することで有効化できます。
- ※ 同一プロトコルでの接続の場合、SSL セッションの再利用よりも前に前回の接続の再利用が働く場合があります(主に HTTPS で同一ホストへの接続が複数回行われる場合に該当します)。
- --noproxy <no-proxy-list>
- Category: proxy
- 接続時にプロキシサーバーを利用しないホスト名を指定します。<no-proxy-list> にはコンマ(「,」)区切りで複数のホスト名を指定することができます。指定したホスト名は任意のポートに対して適用され、かつそのドメイン自身だけでなく、そのドメインをベースとするサブドメインに対しても「プロキシサーバーを使用しない」指定となります。(例として「example.com」を指定すると、「example.com」だけでなく「example.com:443」「www.example.com」も「プロキシサーバーを使用しない」対象となります。)
- また、ワイルドカードは「*」1文字に限り利用することができ、その場合「すべてのホストに対してプロキシサーバーを使用しない」という意味になります。(「*.example.com」のように部分的に「*」を利用することは出来ません。)
- このオプションは、環境変数「
no_proxy
」「NO_PROXY
」を上書きします。すなわち、<no-proxy-list> に「""
」を指定すると、「no_proxy
」「NO_PROXY
」が存在していてもすべてのホストに対してプロキシサーバーを使用するようになります。
- ※ このオプションを使用しない場合、環境変数「
no_proxy
」「NO_PROXY
」が使用されます。「no_proxy
」が存在した場合はその値を、存在しなかった場合は「NO_PROXY
」の値をホスト名のリストとして使用します。(※ Windows の場合は大文字・小文字が区別されないためどちらを使っても構いません。)
- --ntlm
- Protocols: HTTP
- Category: auth http
- HTTP 通信において NTLM 認証を用いるよう指定します。設定ファイルやコマンドライン上で既に別の認証方式(--basic, --digest, --negotiate)が手前に指定されている場合は、それらを上書きして NTLM 認証を利用することができます。
- --ntlm-wb
- Protocols: HTTP
- Category: auth http
- [Windows 10/11 版] このオプションは使用できません。
- --ntlm と同様に NTLM 認証を利用しますが、NTLM 認証時に winbind ヘルパー(ntlm_auth アプリケーション)を利用するようにします。ntlm_auth が /usr/bin 以下にインストールされている必要があります。
- --oauth2-bearer <token>
- Protocols: IMAP POP3 SMTP HTTP
- Category: auth
- POP3, IMAP, SMTP において OAuth2 認証の Bearer トークンを指定します。具体的には SASL (Simple Authentication and Security Layer) を使った認証で OAuth 2.0 認証を利用可能な場合に、指定のトークンを使って認証を試みます。
- [curl 7.61.0 以降] HTTP においてもこのオプションを利用できるようになっています。その場合、「Authorization」ヘッダーが別途指定されていない場合に、「
authorization: Bearer <token>
」を付加してリクエストを行います。
- --output <file>
-o<file>
- Category: important curl
- 受信したレスポンスをファイルに出力します。<file> に保存先のファイル名を指定します。
- URLをパラメーターに指定した時に [ ] や { } を使って複数のURLへのリクエストを行っている場合、出力ファイル名 <file> に「#」と数字を含めることで、[ ] ないし { } によるパターンの名前をファイル名に用いることができます。例えばURLが「https://www.example.com/file[1-3].html」である場合、<file> を「out#1.html」とすることで、3つのURLへのリクエストをそれぞれ「out1.html」「out2.html」「out3.html」に保存することができます。
- --output-dir <directory>
- Category: curl
- [curl 7.73.0 以降] --output や --remote-name などでファイルに出力する際に出力先のディレクトリを変更します。<directory> に保存先のディレクトリ名を指定します。
- --output-dir で指定したディレクトリは --next (-:) オプションの区切りで分割された単位に含まれるすべての URL に対して使用されます。逆に --next を使用した場合は(必要であれば)改めて --output-dir を指定する必要があります。
- なお、指定したディレクトリが存在しない場合は、 --create-dirs オプションを指定しない限り失敗します。
- 複数回このオプションが指定された場合は、最後に指定されたものが使用されます(--next で分割された場合を除く)。
- --parallel
-Z
- Category: connection curl
- [curl 7.66.0 以降] 複数のURLを指定してデータの送受信を行う際、その処理を並列に行います。--output (-o) を指定しない場合標準出力への出力が混ざる可能性があるため、出力を保存したい場合は --output オプションを併用する必要があります。
- このオプションはグローバルオプションとなります(URLごとに指定する必要はなく、--next オプションの有無にかかわらず処理全体に有効となります)。
- --parallel-max <num>
- Category: connection curl
- [curl 7.66.0 以降] --parallel (-Z) で行う並列処理の最大処理数を指定します。
- なお、このオプションを指定しなかった場合の既定値は 50 となります。
- このオプションはグローバルオプションとなります(URLごとに指定する必要はなく、--next オプションの有無にかかわらず処理全体に有効となります)。
- --pass <phrase>
- Protocols: SSH TLS
- Category: ssh tls auth
- [Windows 10/11 版] このオプションを利用する通信(SFTPなど)が利用できないため効果がありません。
- --key で指定した秘密鍵のパスワードを指定します。または、--cert オプションで指定した証明書に対するパスワード指定のオプションとして利用することもできます。空のパスワードを指定する場合は「
""
」と指定します。
- --path-as-is
- Category: curl
- URLにおけるパス部分に「./」や「../」が含まれていた場合、通常は Curl が整形して取り除きますが、それを行わずそのままリクエストに含めるようにします。
- --pinnedpubkey <hashes>
- Protocols: TLS
- Category: tls
- [Windows 10/11 版] このオプションは使用できません。(libcurl ビルド時に使った SSL ライブラリでは対応していないため)
- TLS において接続先の公開鍵を指定の値で検証するように指定します。<hashes> には PEM または DER フォーマットの公開鍵を1つ持つファイル名を指定します。また、ファイル名の代わりに、公開鍵のハッシュ値をBase64エンコードして、先頭に(それぞれ)「
sha256//
」を付け、「;」(セミコロン)区切りで複数繋げたものを指定することもできます。
- なお、このオプションは次の SSL ライブラリを使用している場合にのみサポートされます: OpenSSL, GnuTLS, GSKit (PEM/DER ファイル指定のみ), NSS, wolfSSL, mbedtls
- --post301
- --post302
- --post303
- Protocols: HTTP
- Category: http post
- HTTP において、それぞれステータスコードが 301, 302, 303 でのリダイレクト時にリクエストを POST から GET に変換せず、リダイレクト先でも POST を行うようにします。301 および 302 は RFC 7231 に従うとリダイレクト先でも POST を維持するとされていますが、303 については維持しないとされています。Curl はデフォルトではいずれの場合も GET に変換するため、RFC に従う、あるいは破る場合は明示的にオプションを指定する必要があります。
- なお、--location オプションを指定していない場合はリダイレクトが行われないため、その場合これらのオプションは意味を持ちません。
- --preproxy [protocol://]host[:port]
- Category: proxy
- --proxy オプションで指定した HTTP/HTTPS プロキシサーバーに接続する前に接続する SOCKS プロキシサーバーを指定します。言い換えると、[protocol://]host[:port] で指定したサーバーに接続後、そのサーバーを介して --proxy で指定したサーバーに接続します。
- [protocol://]host[:port] で指定する接続先は SOCKS である必要があるため、[protocol://] 部分には
socks4://
, socks4a://
, socks5://
および socks5h://
のいずれかが指定できます(省略した場合は SOCKS4 として扱われます)。また、ポート番号([:port])を省略した場合は 1080 を利用します。
- --progress-bar
-#
- Category: verbose
- Curl が通信の進捗(割合など)を表示する際、平均速度などの詳細を表示せず、単純なプログレスバー表示のみを行うようにします。プログレスバーは「#」文字で出力され、横に割合を示す数字(パーセント)が表示されます(合計サイズが不明な状況下では代わりに宇宙船(?)を模した絵文字が動きます)。
- --proto <protocols>
- Category: connection curl
- Curl での通信処理で利用するプロトコル/スキーム(scheme name; http など)を指定します。既定では Curl がサポートするすべてのプロトコル/スキームが利用可能な状態になっていますが、このオプションにより、特定のプロトコル/スキームを無効にしてそれらが利用されそうになった場合にエラーにすることができます。
- [protocols] にはコンマ「,」区切りで以下の内容を1つまたは複数指定します。以下の内容における protocol には、「https」や「ftps」など Curl で利用できるプロトコル/スキーム、および一括指定を意味する「all」を指定します。複数指定する場合、そのリスト内の順序は後に指定されたものが優先されます。(例:
-all,+https
なら https のみ有効、-http,+all
ならすべて有効)
- +protocol
- 指定の protocol の利用を有効にします。「+」は省略可能であり、以下の「-」や「=」も含め記号を指定しなかった場合は「+」扱いになります。(例:
+https
)
- -protocol
- 指定の protocol の利用を無効にします。(例:
-http
)
- =protocol
- 指定の protocol の利用のみ有効にします。この指定がある場合、それより前に指定していたものは無視されますが、この指定よりも後に別の有効/無効指定を入れた場合はそれらが優先されます。(例:
=http,https
)
- -all
- [「-」と「all」を組み合わせた例] すべての(既定の)プロトコル/スキームの利用を無効にします。最初に「
-all
」を指定したのち、続けて「+protocol
」を指定して特定のプロトコル/スキームのみを利用可能にする、といった形で利用します。
- --proto-default <protocol>
- Category: connection curl
- URL内にプロトコル/スキーム(scheme name; http など)が指定されていなかった場合の既定の値を [protocol] に指定します。このオプションが指定されていない場合は既定値として「http」が使用されます。
- --proto-redir <protocols>
- Category: connection curl
- リダイレクト時の遷移先として許可/拒否するプロトコル/スキーム(scheme name; http など)をリストで指定します。指定方法は --proto と同様です。ただし --proto で拒否される場合は --proto-redir で許可としても拒否されます。
- 既定では file, scp, smb, smbs は拒否されます。これらも含めて許可する場合は「+all」を指定します。逆に特定のプロトコル/スキームのみ許可する場合は「-all,+http,+https」などと指定します。
- ※ このオプションを指定しなかった場合の既定値はセキュリティの観点もあり Curl バージョンによって異なります。
- --proxy [protocol://]host[:port]
-x[protocol://]host[:port]
- Category: proxy
- 接続時に利用するプロキシサーバーを指定します。
- [protocol://] 部分には接続方式のプロトコルを指定します。「
http://
」「https://
」(下記注意参照)、および「socks4://
」「socks4a://
」「socks5://
」「socks5h://
」(それぞれ対応する SOCKS 方式)のいずれかを指定します。省略した場合は「http://
」扱いとなります。なお、それ以外の不明なプロトコルを指定した場合はエラーとなります。
- [:port] 部分には「:」文字とポート番号を指定します。省略した場合は 1080 が使用されます。
- なお、このオプションが指定されていない場合、環境変数からプロキシサーバーの取得を試みます。使用する環境変数は、実際に接続しようとしているURLのプロトコル(小文字)を取得し、そこに「
_proxy
」を付加した名前の変数を使います(例: HTTPS に接続する場合は https_proxy
)。なお、その変数が見つからなかった場合、http_proxy
以外は大文字バージョンの環境変数(例: HTTPS_PROXY
)の確認も行います。また、それらが見つからなかった場合、all_proxy
環境変数 → ALL_PROXY
環境変数の確認も行われ、見つかった場合はその値がプロキシサーバーとして使用されます。(※ Windows では環境変数の大文字・小文字は区別されないため、大文字・小文字どちらの表記でも使用されます。)
- まとめると以下の順になります。
- --noproxy オプション指定があり、そこに書かれたホストに該当する場合 → プロキシサーバーは使用されない
- --noproxy オプション指定がなく、
no_proxy
環境変数に書かれたホストに該当する場合 → プロキシサーバーは使用されない (no_proxy → 無ければ NO_PROXY の順でチェック)
- --proxy オプションがある場合 → 指定のプロキシサーバーが使用される
<protocol>_proxy
環境変数がある場合 → 環境変数の値に書かれたプロキシサーバーが使用される (小文字(*_proxy) → 無ければ大文字(*_PROXY, ただし HTTP_PROXY は除く)の順でチェック)
all_proxy
環境変数がある場合 → その変数の値に書かれたプロキシサーバーが使用される (all_proxy → 無ければ ALL_PROXY の順でチェック)
- いずれにも該当しない場合 → プロキシサーバーは使用されない
- ※ https でホストされるプロキシサーバーは OpenSSL, GnuTLS, および NSS のいずれかのSSLライブラリを使用している場合のみサポートされています。[Windows 10/11 版] Windows 10/11 付属版ではサポートされていません。
- ※
HTTP_PROXY
環境変数(大文字版)が用いられないのは主にCGIプログラムにおけるセキュリティ上の問題とされています。
- --proxy-anyauth
- Category: proxy auth
- プロキシ接続で認証を行う際にBASIC認証・Digest認証・NTLM認証・SPNEGO認証をすべてトライします(--anyauth のProxyサーバー接続用)。ユーザー名・パスワードを指定するには --proxy-user を使います。
- --proxy-basic
- Category: proxy auth
- プロキシ接続で認証を行う際にBASIC認証を利用します(--basic のProxyサーバー接続用)。ユーザー名・パスワードを指定するには --proxy-user を使います。
- --proxy-ca-native
- Protocols: TLS
- Category: tls
- [Windows 10/11 版] このオプションは無視され、既定処理としてWindowsが持つ証明書ストアが使用されます。(libcurl ビルド時に使った SSL ライブラリでは対応していないため非対応)
- [curl 8.2.0 以降] HTTPSプロキシサーバーの認証時に使う証明書をOSが保持しているものを使うように指定します(--ca-native のProxyサーバー接続用)。
- --proxy-cacert <file>
- Category: proxy tls
- ※ [Windows 10/11 版] https でホストされるプロキシサーバーは curl 7.87.0 以降で利用できます。(--version でバージョンを確認することができます。)
- HTTPSプロキシサーバーに接続する際に用いるCAファイルのパスを指定します(--cacert のProxyサーバー接続用)。
- --proxy-capath <dir>
- Category: proxy tls
- ※ [Windows 10/11 版] https でホストされるプロキシサーバーは curl 7.87.0 以降で利用できます。(--version でバージョンを確認することができます。)
- HTTPSプロキシサーバーに接続する際に用いるCAデータ検索先ディレクトリのパスを指定します(--capath のProxyサーバー接続用)。「:」で区切ることで複数指定できます。
- --proxy-cert <cert[:password]>
- Category: proxy tls
- ※ [Windows 10/11 版] https でホストされるプロキシサーバーは curl 7.87.0 以降で利用できます。(--version でバージョンを確認することができます。)
- HTTPSプロキシサーバーに接続する際に使うクライアント認証のファイルを指定します(--cert のProxyサーバー接続用)。パスワードは --proxy-pass で指定することもできます。
- --proxy-cert-type <type>
- Category: proxy tls
- ※ [Windows 10/11 版] https でホストされるプロキシサーバーは curl 7.87.0 以降で利用できます。(--version でバージョンを確認することができます。)
- --proxy-cert で指定する証明書ファイルの形式を指定します(--cert-type のProxyサーバー接続用)。
- --proxy-ciphers <list>
- Category: proxy tls
- ※ [Windows 10/11 版] https でホストされるプロキシサーバーは curl 7.87.0 以降で利用できます。(--version でバージョンを確認することができます。)
- HTTPSプロキシサーバーに接続する際に使う暗号方式のリストを指定します(--ciphers のProxyサーバー接続用)。
- --proxy-crlfile <file>
- Category: proxy tls
- ※ [Windows 10/11 版] https でホストされるプロキシサーバーは curl 7.87.0 以降で利用できます。(--version でバージョンを確認することができます。)
- HTTPSプロキシサーバーに接続する際に用いる証明書失効リストのファイルを指定します(--crlfile のProxyサーバー接続用)。
- --proxy-digest
- Category: proxy tls
- プロキシ接続で認証を行う際にDigest認証を利用します(--digest のProxyサーバー接続用)。ユーザー名・パスワードを指定するには --proxy-user を使います。
- --proxy-http2
- Protocols: HTTP
- Category: http proxy
- [curl 8.1.2 以降] HTTPSプロキシサーバーに接続する際、HTTP/2 (HTTP バージョン 2) を使っての通信を試みます。このオプションを使用しない場合は HTTP/1.1 を使用します。
- --proxy-insecure
- Category: proxy tls
- ※ [Windows 10/11 版] https でホストされるプロキシサーバーは curl 7.87.0 以降で利用できます。(--version でバージョンを確認することができます。)
- HTTPSプロキシサーバーに接続する際に、SSL通信の過程でセキュリティ上問題がある接続と判断した場合でも接続を続行します(--insecure のProxyサーバー接続用)。
- --proxy-key <key>
- Category: proxy tls
- ※ [Windows 10/11 版] https でホストされるプロキシサーバーは curl 7.87.0 以降で利用できます。(--version でバージョンを確認することができます。)
- HTTPSプロキシサーバーに接続する際の TLS での認証に使う秘密鍵を指定します(--key のProxyサーバー接続用)。秘密鍵に対するパスワードは --proxy-pass オプションで指定します。
- --proxy-key-type <type>
- Category: proxy tls
- ※ [Windows 10/11 版] https でホストされるプロキシサーバーは curl 7.87.0 以降で利用できます。(--version でバージョンを確認することができます。)
- --proxy-key オプションで指定する秘密鍵の形式を DER, PEM, ENG から指定します(--key-type のProxyサーバー接続用)。
- --proxy-negotiate
- Category: proxy tls
- プロキシ接続で認証を行う際にSPNEGO認証を利用します(--negotiate のProxyサーバー接続用)。ダミーのユーザー名・パスワードを指定するには --proxy-user を使います(最低限は
--proxy-user :
で可能です)。
- --proxy-ntlm
- Category: proxy auth
- プロキシ接続で認証を行う際にNTLM認証を利用します(--ntlm のProxyサーバー接続用)。ユーザー名・パスワードを指定するには --proxy-user を使います。
- --proxy-pass <phrase>
- Category: proxy tls auth
- ※ [Windows 10/11 版] https でホストされるプロキシサーバーは curl 7.87.0 以降で利用できます。(--version でバージョンを確認することができます。)
- --proxy-key で指定した秘密鍵のパスワードを指定します。または、--proxy-cert オプションで指定した証明書に対するパスワード指定のオプションとして利用することもできます(--pass のProxyサーバー接続用)。空のパスワードを指定する場合は「
""
」と指定します。
- --proxy-pinnedpubkey <hashes>
- Protocols: TLS
- Category: proxy tls
- [Windows 10/11 版] https でホストされるプロキシサーバーが利用できないため、このオプションは実質利用できません。
- [curl 7.59.0 以降] HTTPSプロキシサーバーに接続する際の TLS において接続先の公開鍵を指定の値で検証するように指定します。<hashes> には PEM または DER フォーマットの公開鍵を1つ持つファイル名を指定します。また、ファイル名の代わりに、公開鍵のハッシュ値をBase64エンコードして、先頭に(それぞれ)「
sha256//
」を付け、「;」(セミコロン)区切りで複数繋げたものを指定することもできます。
- ※ curl 7.83.0 時点でこのオプションは正しく実装されていない可能性があります。
- --proxy-service-name <name>
- Category: proxy tls
- プロキシ接続でSPNEGO認証を行う際に用いるサービス名を変更します(--service-name のProxyサーバー接続用)。SPNEGO認証をするには --proxy-negotiate オプションを使用します。
- --proxy-ssl-allow-beast
- Category: proxy tls
- ※ [Windows 10/11 版] https でホストされるプロキシサーバーは curl 7.87.0 以降で利用できます。(--version でバージョンを確認することができます。)
- HTTPSプロキシサーバーに対する SSL3 / TLS 1.0 での接続において「BEAST」として知られるセキュリティ脆弱性への回避策を用いないようにします(--ssl-allow-beast のProxyサーバー接続用)。
- --proxy-tlsauthtype <type>
- Category: proxy tls auth
- ※ [Windows 10/11 版] https でホストされるプロキシサーバーは curl 7.87.0 以降で利用できます。(--version でバージョンを確認することができます。)
- HTTPSプロキシサーバーに対する TLS 接続における認証方式を指定します(--tlsauthtype のProxyサーバー接続用)。
- --proxy-tlspassword <phrase>
- Category: proxy tls auth
- ※ [Windows 10/11 版] https でホストされるプロキシサーバーは curl 7.87.0 以降で利用できます。(--version でバージョンを確認することができます。)
- HTTPSプロキシサーバーに対する TLS 接続において認証にユーザー名・パスワードを使用する際のパスワードを指定します(--tlspassword のProxyサーバー接続用)。
- --proxy-tlsuser <name>
- Category: proxy tls auth
- ※ [Windows 10/11 版] https でホストされるプロキシサーバーは curl 7.87.0 以降で利用できます。(--version でバージョンを確認することができます。)
- HTTPSプロキシサーバーに対する TLS 接続において認証にユーザー名・パスワードを使用する際のユーザー名を指定します(--tlsuser のProxyサーバー接続用)。
- --proxy-tlsv1
- Category: proxy tls auth
- ※ [Windows 10/11 版] https でホストされるプロキシサーバーは curl 7.87.0 以降で利用できます。(--version でバージョンを確認することができます。)
- HTTPSプロキシサーバーに対する SSL/TLS 接続において SSL は使用せず TLS 1.x (TLS 1.0 以降)を使用するように指定します(--tlsv1 のProxyサーバー接続用)。
- --proxy-user <user>:<password>
- Category: proxy auth
- プロキシサーバーの認証に用いるユーザー名およびパスワードを指定します(--user のProxyサーバー接続用)。なお「:password」を省略した場合は、Curl がパスワードを尋ねるプロンプトを表示します。
- --proxy1.0 <host>[:<port>]
- Category: proxy
- HTTP 1.0を利用してプロキシ接続を行います。<host> にはプロキシサーバーのホストを指定します。ポート番号を指定する場合はホスト名に続けて「:」(コロン)を入れ、その後ろに番号を指定します。なお、ポート番号を省略した場合は 1080 が使用されます。
- なお、このオプションによるHTTP 1.0利用は CONNECT 処理時に使用されます。(それ以外の通信においては --http1.0 や --http1.1 などの指定に従います。)
- --proxytunnel
-p
- Category: proxy
- プロキシ接続において、実際の接続先がHTTPである場合においても CONNECT 処理を利用します。(通常はHTTPSである場合に CONNECT 処理が使用され、HTTPである場合には利用されません。)
- --pubkey
- Protocols: SFTP SCP
- Category: sftp scp auth
- ※ [Windows 10/11 版] scp および sftp をサポートしていないため、このオプションは実質利用できません。
- SCP および SFTP 接続において公開鍵を指定します。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- なお、Curl が自動で秘密鍵から公開鍵を取り出す場合、このオプションの利用は必須ではありません。自動取り出し処理は (OpenSSL をリンクした) libssh2 1.2.8 以降をリンクした libcurl でのみサポートされます。
- --quote <command>
-Q<command>
- Protocols: FTP SFTP
- Category: ftp sftp
- ※ [Windows 10/11 版] scp および sftp をサポートしていないため、このオプションは実質FTP向けのコマンドとなります。
- FTPおよびSFTPにおいて、ファイル転送の前に指定のコマンドを実行します。FTPの場合、<command> にはサーバーが解釈できるコマンドを指定します。複数のコマンドを実行したい場合は「--quote」オプションをそのコマンドの数だけ指定します。
- また、ファイル転送の「後」にコマンドを実行したい場合は、コマンドの先頭に「-」(ハイフン)を付けることでファイル転送後に実行させることができます。またFTPにおいては、コマンドの前に「+」を付けると、FTPでのファイル転送時のカレントディレクトリ変更直後、ファイル転送前のタイミングでコマンドを実行させることができます。
SFTPにおけるコマンドについて
SFTPはバイナリーデータをやり取りするコマンドであるため、「サーバーがテキストベースのコマンドを解釈する」ことはできませんが、代わりに Curl がコマンドを解釈して特定の処理を行うことを可能にしています。その Curl が解釈するコマンドは以下の通りです。
- atime <date> <file>
- [curl 7.73.0 以降] <file> で指定したファイルの最終アクセス日時を <date> で指定した日時に変更します。日時の構文は「Curlにおける日付構文」に従います。
- chgrp <group> <file>
- <file> で指定したファイルの所有グループを <group> に変更します。<group> にはグループIDを整数で指定します。
- chmod <mode> <file>
- <file> で指定したファイルのモード(属性)を <mode> に変更します。<mode> には8進数整数(例: 0644)を指定します。
- chown <user> <file>
- <file> で指定したファイルの所有者(ユーザー)を <user> に変更します。<user> にはユーザーIDを整数で指定します。
- ln <source> <target>
- <target> を指すシンボリックリンクを <source> として作成します。
- mkdir <directory>
- <directory> で指定したディレクトリを作成します。「-p」オプションは無いので親ディレクトリ込みで指定する場合は親ディレクトリが存在している必要があります。
- mtime <date> <file>
- [curl 7.73.0 以降] <file> で指定したファイルの最終変更日時を <date> で指定した日時に変更します。日時の構文は「Curlにおける日付構文」に従います。
- pwd
- コマンド実行時の現在のディレクトリをフルパスで出力します。
- rename <source> <target>
- <source> で指定したファイルを <target> にリネームないし移動します。(<target> にディレクトリ名を含む場合は移動になります。)
- rm <file>
- <file> で指定したファイルを削除します。
- rmdir <directory>
- <directory> のディレクトリが空である場合、そのディレクトリを削除します。
- symlink <source> <target>
- 「ln」と同じです。
- --random-file<file>
- Category: misc
- [Windows 10/11 版] このオプションは無視されます。(OpenSSL を使用していないため)
- [curl 7.84.0 以降] このオプションは廃止予定とされ、curl 7.84.0 以降では無視されます。
- 乱数生成に用いる「乱数ファイル」のファイル名を指定します。このオプションが指定されていない場合は
/dev/urandom
などビルド時に指定されたファイルが使用されます。(利用できなかった場合は EGD の利用を試みます。その際 --egd-file の指定がある場合はそのファイルが使用されます。
- なお、現時点(少なくとも curl 7.55.1 から 7.81.0 のバージョン)では libcurl が OpenSSL を利用しているときのみこのオプションが使用され、かつ OpenSSL が既定で乱数ジェネレーターの初期化を行うため、それに成功したときはこのオプションは使用されません。
- --range <range>
-r<range>
- Protocols: HTTP FTP SFTP FILE
- Category: http ftp sftp file
- HTTP(S) (1.1 以降), FTP, SFTP および FILE プロトコルにおいて、データの部分取得をリクエストします。<range> には取得したいデータの範囲をバイト単位で以下のように指定します。
- 0-499
- 最初から500バイト分を取得します。(先頭を「0バイト目」として、「0バイト目」から「499バイト目」までの「500バイト」という意味になります。)
- 500-999
- 500バイト目から500バイト分(999バイト目まで)を取得します。
- 0-0
- 最初(0バイト目)だけの1バイト分を取得します。
- -500
- 末尾の500バイト分を取得します。
- 500-
- 500バイト目から末尾までを取得します。
- 0-499,-500
- 最初から500バイト分と、末尾の500バイト分を取得します。(※)
- 500-999,1500-1999
- 500バイト目から500バイト分と、1500バイト目から500バイト分を取得します。(※)
(※) で示した指定方法(範囲の複数指定)は HTTP(S) でのみ利用可能であり、受信データが「Multipartレスポンス」となります。実際にどのようなレスポンスになるかはプロトコルによって異なることと、Curl はそれに対して特に解釈はせずそのまま出力するため、データの取り扱いには注意が必要です。
- 範囲指定には原則として数値のみが指定可能であり、それ以外を指定した場合の動作は未定義です(サーバーに依存します)。
- FTP においては拡張コマンドである「SIZE」コマンドを使用して範囲取得を行います。
- --rate <N>/<unit>
- Category: connection
- [curl 7.84.0 以降] 複数のリクエスト(パラメーターとしてURLが複数指定されている場合)に対して単位時間当たりのリクエスト数(request rate)を設定(制限)します。1つのリクエストが「時間 ÷ リクエスト数」で求められる時間よりも早く完了した場合、その時間が経つまで次のリクエストを待機します。このオプションを使わない場合は1つのリクエスト完了後すぐに次のリクエストが行われます。
- <N> にはリクエスト数(数値)、<unit> には時間の単位を指定します。時間の単位は「
s
」(秒)、「m
」(分)、「h
」(時)、「d
」(日)のいずれかを指定します(必ず小文字で指定します)。<N> と <unit> の間には「/」を入れる必要がありますが、「/」と「<unit>」の両方を省略した場合は「h
」を使用します。「6/m
」と指定した場合は、1リクエスト当たり10秒(= 60秒(1分) ÷ 6)のリクエスト間隔を設けます。なお、時間はミリ秒単位で処理されます。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- ※ このオプションは --retry オプションによるリトライ時の実行待機の時間には影響しません。
- --raw
- Protocols: HTTP
- Category: http
- HTTP において、各種転送処理におけるデコード処理を行わず、そのまま出力します。例えば --compressed オプションを用いている場合、--raw を付けるとレスポンスの出力が圧縮データそのままとなります。(その場合、明示的な --output オプションの指定がない場合「標準出力に出力できない」として処理に失敗します。)
- --referer <URL>
-e<URL>
- Protocols: HTTP
- Category: http
- HTTP において「リファラー」を指定します。リファラーは「Referer」ヘッダーとして付加される情報であり、主に(リクエスト先URLの)「参照元サイト」を指します。<URL> には任意のURL(または文字列)を指定します。
- なお、<URL> に「
;auto
」(セミコロン + 「auto」) を指定した場合、リダイレクト時(--location オプション利用)、リダイレクト先のサイトをリクエストする際にリダイレクト元のURLをリファラーとして設定します。
- このオプションを使用しない場合でも、--header オプションで明示的に「Referer」を指定することも可能です。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- ※ リファラー(参照する人、などの意味)という単語の本来の綴りは「referrer」ですが、HTTP の「リファラー」という用語では「referer」という綴りが使用されており、このオプションも HTTP で使用される綴りに従っています。
- --remote-name
-O
- Category: important output
- URLからファイル名を抽出してそのファイル名を持ったファイルにレスポンスを書き込みます(ファイル名のみが使用され、パス部分は無視されます)。ファイルは現在のディレクトリに書き込まれます。([curl 7.73.0 以降] ディレクトリを変えたい場合は --output-dir を使用します。)
- このオプションを利用する場合、ファイル名は常にURLから抽出されます。サーバーがレスポンス中に含まれるファイル名は使用しないため、これを使用したい場合は --remote-header-name オプションを加えて指定する必要があります。
- 書き込もうとするファイルが既に存在した場合、ファイルは上書きされます。また、URLデコードは行われないため、ファイル名に相当する部分に % エンコードが含まれていた場合はそれがそのままファイル名になります。
- このオプションは指定したURLの数だけ指定することができます(逆に指定URLの数がこのオプションよりも多い場合は、超過分には適用されません)。すべてのURLに対して一括で指定したい場合は --remote-name-all オプションを利用します。
- --remote-name-all
- Category: output
- すべてのURLに対して --remote-name オプションを適用するモードとします。このオプションを使用した状況で特定のURLに対してだけ適用したくない場合は、そのURLに対して「--no-remote-name」と指定します(あるいは「-o -」と指定して標準出力に出力させるようにします)。
- --remote-time
-R
- Category: output
- レスポンスをファイルに出力(--output オプションを利用)する際、そのタイムスタンプ(最終更新日時)を可能な限りサーバーから取得できる最終更新日時に揃えます。例えば HTTP においては、「Last-Modified」ヘッダーがあればそこに書かれた日時を用います。
- --remove-on-error
- Category: curl
- [curl 7.83.0 以降] ローカルにファイルを保存するオプション付きで実行された Curl がエラーの終了コードで処理を終えたとき、そのローカルファイルを削除します。例えば「--output」と「--fail-with-body」が同時指定されてサーバーが失敗のレスポンスを返した場合、通常であれば --fail-with-body の効果でファイルが保存されますが、--remove-on-error があるとファイルは保存されず削除されます。エラーはサーバーによるエラーレスポンスだけとは限らず、通信エラーも含まれるため、このオプションにより中途半端な状態のファイルが保存されるといったことを防ぐことができます。
- --request <command>
-X<command>
- Category: connection
- HTTP においてリクエストメソッドを指定します。サーバーが解釈できるメソッドであれば何でも指定することができます。(例として WebDAV 用メソッドも指定できます。)
- 通常、Curl は --head オプションを指定していれば「HEAD」を、--data オプションなどを指定していれば「POST」を、--upload-file オプションを指定していれば「PUT」を、それ以外の場合は「GET」メソッドを使用します。これらのオプションを使っている場合、使いたいリクエストメソッドが既定値と同じなのであれば敢えて --request オプションを指定する必要はありませんが、例えば「POST」の代わりに「PUT」、「GET」の代わりに「DELETE」を実行したい場合などはこのオプションが有用です。
- なお、--location オプションを使ってリダイレクトする場合、--request でリクエストメソッドを指定するとリダイレクト後も同じリクエストメソッドを使用します。(--post303 などのオプションと無関係に固定されます。)
- FTP においては、LIST コマンドの代わりに送る FTP コマンドを指定します。
- POP3 においては、LIST コマンド・RETR コマンドの代わりに送る POP3 コマンドを指定します。
- IMAP においては、LIST コマンドの代わりに送る IMAP コマンドを指定します。
- SMTP においては、HELP コマンド・VRFY コマンドの代わりに送る SMTP コマンドを指定します。
- --request-target <target>
- Protocols: HTTP
- Category: http
- HTTP において、実際にリクエストパス名をURLから得られる値ではなく、<target> で指定した値をそのまま用いるようにします。通常は、URLにおけるホスト名の後にある「/」およびそれ以降の文字列がリクエストパスとして使われますが、例えば「
OPTIONS *
」というリクエストを送りたい場合は、--request オプションで「OPTIONS
」を指定し、このオプションを使って「*
」を指定することで実現することができます。
- --resolve host:port:addr
- Category: connection
- 指定のホスト名・ポート番号へのアクセスがあった場合に、通常の名前解決処理の代わりに指定のアドレスを使うようにします。
- [curl 7.57.0 以降] addr に [ ] を使うことができます(IPv6 表記を分かりやすくする際に使用できます)。
- [curl 7.59.0 以降] addr をコンマ区切りで複数指定することができます。
- [curl 7.64.0 以降] host にワイルドカードを使用することができます。
- [curl 7.75.0 以降] host の先頭に「+」を付けると、このエントリーは一定時間(既定では1分)でタイムアウトするようにさせることができます。これは、Curl による一連の通信処理に時間がかかる場合にのみ効果があり、通信処理に一定の時間がかかった後に指定されたエントリに対するホスト名を解決しようとしたときに、(エントリがExpireして)そのエントリが使用されなくなる、といった挙動になります。
- --retry <num>
- Category: curl
- 通信結果が「一時エラー」であった場合、最大で指定した回数だけリトライを行います。「一時エラー」は「タイムアウト」、「FTPにおける 4xx のレスポンスコード」、「HTTPにおける 408, 429, 500, 502, 503, 504 のステータスコード」のいずれかを指します。
- 既定では、最初のリトライは1秒後に行われ、その次は2秒後、4秒後、8秒後、…と続いて最大10分に達するまで繰り返します(<num> の回数だけリトライしたらそこで終わります)。「何秒後にリトライするか」を固定する場合は --retry-delay オプションを、「最大何秒に達したらリトライを止めるか」を10分から変更する場合は --retry-max-time オプションを利用します。
- [curl 7.66.0 以降] リトライ対象のレスポンスに「Retry-After:」が含まれていた場合、次のリトライタイミングはその内容に従って決定されます。
- --retry-connrefused
- Category: curl
- --retry オプションでの「一時エラー」とする通信結果に「接続が拒否されました」(ECONNREFUSED)エラーも含めて取り扱います。(--retry オプションを同時に指定しない場合は意味を持ちません。)
- --retry-delay <seconds>
- Category: curl
- --retry オプションでのリトライタイミングを、<seconds> で指定した秒数を経過した後のタイミングに固定します。
- [curl 7.66.0 以降] リトライ対象のレスポンスに「Retry-After:」が含まれていた場合、このオプションで指定した値は無視されます。
- --retry-max-time <seconds>
- Category: curl
- --retry オプションでのリトライを、「リトライ待機時間」が <seconds> で指定した秒数を上回る場合に中止します。例えば「--retry 20 --retry-max-time 30」と指定した場合は、リトライは1秒後、2秒後、4秒後、8秒後、16秒後に行われますが、次が32秒後で30秒を超えるため、20回に達していないもののそこでリトライをしなくなります。
- ※ --retry-delay や「Retry-After:」レスポンスがあったとしても、既定の 1秒、2秒、4秒、… の計算を利用してリトライを打ち切るかどうか決定されます。
- --sasl-authzid <id>
- Category: auth
- [curl 7.66.0 以降] SASL PLAIN認証処理に対する認可ID(authzid)を、 --user オプションで指定した認証ID(authcid)とは別に指定します。このオプションを指定しなかった場合は認証ID由来の値が使用されます。
- --sasl-ir
- Category: auth
- SASL認証をサポートする処理にて、最初のパケットで初期レスポンスをサーバーに送信するようにします。
- --service-name <name>
- Category: misc
- SPNEGO認証で用いるサービス名を変更します(--negotiate とともに使用します。デフォルトではそれぞれのプロトコルに応じた名前が使用されます)。 SPN文字列を生成する際に用いられます。
- --show-error
-S
- Category: curl
- --silent オプションが指定されていても、エラーメッセージは出力するようにします。
- --silent
-s
- Category: important verbose
- レスポンス以外何も出力しないようにします(--show-error 指定が無い限りエラーメッセージも出力されなくなります)。
- --socks4 host[:port]
- Category: proxy
- SOCKS4 プロキシサーバーを指定します。このオプションは --proxy オプションで「socks4://」プロトコルを指定してプロキシサーバーを指定するのと同じ効果になります。--proxy オプションの説明もご覧ください。
- このオプションはそれまでに指定された --proxy オプションを上書きします。また、このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --socks4a host[:port]
- Category: proxy
- SOCKS4a プロキシサーバーを指定します。このオプションは --proxy オプションで「socks4a://」プロトコルを指定してプロキシサーバーを指定するのと同じ効果になります。--proxy オプションの説明もご覧ください。
- このオプションはそれまでに指定された --proxy オプションを上書きします。また、このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --socks5 host[:port]
- Category: proxy
- SOCKS5 プロキシサーバーを指定します(ホスト名はローカルで解決する方式)。このオプションは --proxy オプションで「socks5://」プロトコルを指定してプロキシサーバーを指定するのと同じ効果になります。--proxy オプションの説明もご覧ください。
- このオプションはそれまでに指定された --proxy オプションを上書きします。また、このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --socks5-basic
- Category: proxy auth
- SOCKS5 プロキシサーバー接続時にユーザー名・パスワードを使った認証を使用できるようにします。既定ではユーザー名・パスワードによる認証は有効になっていますが、--socks5-gssapi オプションを明示的に指定すると無効化されます。(その場合、--socks5-basic オプションをさらに指定すると両方有効化できます。)
- --socks5-gssapi
- Category: proxy auth
- SOCKS5 プロキシサーバー接続時にGSS-API認証を使用できるようにします。既定では、GSS-API の機能が使用できる場合有効になっていますが、--socks5-basic オプションを明示的に指定すると無効化されます。(その場合、--socks5-gssapi オプションをさらに指定すると両方有効化できます。)
- --socks5-gssapi-nec
- Category: proxy auth
- GSS-API での保護モード(保護レベル)を送り合う通信において、そのデータを保護しないで送受信するようにします。RFC 1961 によれば保護モードの送受信も保護してやり取りすることが記載されていますが、一部実装ではそうではないため、その一部実装(を使ったサーバー)に対応したい場合にこのオプションを使用します。
- --socks5-gssapi-service <name>
- Category: proxy auth
- このオプションは --proxy-service-name と同一オプション扱いされており、非推奨となっています。詳しくはそちらの説明をご覧ください。
- --socks5-hostname host[:port]
- Category: proxy
- SOCKS5 プロキシサーバーを指定します(ホスト名はプロキシサーバーが解決する方式)。このオプションは --proxy オプションで「socks5h://」プロトコルを指定してプロキシサーバーを指定するのと同じ効果になります。--proxy オプションの説明もご覧ください。
- このオプションはそれまでに指定された --proxy オプションを上書きします。また、このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --speed-limit <speed>
-Y<speed>
- Category: connection
- ダウンロード時の通信速度が一定時間指定値を下回った場合失敗扱い(終了コード 28)とします。<speed> には1秒あたりのサイズをバイト単位で指定します(K や M などの接尾辞は使用できません)。
- 「一定時間」は --speed-time オプションで指定しますが、指定が無かった場合は 30 秒が使用されます。(もしダウンロードスピードが遅くても、一定時間以内にダウンロードが完了するような場合は処理は中止されません。)
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --speed-time <seconds>
-y<seconds>
- Category: connection
- ダウンロード時の通信速度が指定時間一定値を下回った場合失敗扱い(終了コード 28)とします。<seconds> には秒単位で時間を指定します。
- 「一定値」は --speed-limit オプションで指定しますが、指定が無かった場合は 1 (バイト)が使用されます。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --ssl
- Protocols: FTP IMAP POP3 SMTP
- Category: tls
- 各種通信において SSL/TLS を利用するように指定します。例として FTP においては「
AUTH SSL
」をサーバーに送信して許可されれば以降のやり取りを SSL/TLS 暗号化ありで行います。
- このオプションでは、SSL/TLS 利用を拒否されるなどで利用できなかった場合、元の SSL/TLS を使用しない通信で続行します。--ssl-reqd を使うことで、利用できなかった場合失敗扱いにすることができます。
- FTP においては、--ftp-ssl-control オプションを利用すると「コントロール通信」(コマンドのやり取り)においては SSL/TLS を利用し、「データ通信」(LIST のレスポンスやファイル送受信などのやり取り)においては非暗号化通信を利用する、という対応をすることができます。
- ※ 古い Curl ではFTP向けに --ftp-ssl として提供されていたオプションです。FTP 以外でも使われるためこのオプション名になっています。
- --ssl-allow-beast
- Category: tls
- SSL3 / TLS 1.0 での接続において「BEAST」として知られるセキュリティ脆弱性への回避策を用いないようにします。このオプションを用いない場合回避策を用いることになりますが、一部の古い(サーバーの)SSL実装に対して問題が起きる可能性があります。一方、このオプションを使用した場合はセキュリティ上堅牢度が下がることになります。
- --ssl-no-revoke
- Category: tls
- [Windows (Schannel) のみ] SSL/TLS 通信において証明書の期限切れチェックを行わないようにします。このオプションを指定するとセキュリティ強度が弱くなるため、使用する際には十分注意する必要があります。
- --ssl-reqd
- Protocols: FTP IMAP POP3 SMTP
- Category: tls
- --ssl オプションと同様に各種通信において SSL/TLS を利用するように指定しますが、利用できなかった場合は失敗扱いとするようにします。
- ※ 古い Curl ではFTP向けに --ftp-ssl-reqd として提供されていたオプションです。FTP 以外でも使われるためこのオプション名になっています。
- --ssl-revoke-best-effort
- Category: tls
- [curl 7.70.0 以降] [Windows (Schannel) のみ] SSL/TLS 通信において証明書の期限切れチェックを行う際、失効サーバーが存在しないかオフラインであるという理由で使用できない場合、期限切れチェックエラーとせず無視して進めるようにします。このオプションを指定するとセキュリティ強度が弱くなるため、使用する際には十分注意する必要があります。
- --sslv2
-2
- Protocols: SSL
- Category: tls
- SSL/TLS 通信において Curl が SSLv2 を使うように指定します。現在 SSLv2 はセキュリティ上問題があるため、このオプションは使用すべきではないと考えられます。
- このオプションは --sslv3, --tlsv1, --tlsv1.1, --tlsv1.2 の各オプションを上書きします。
- なお、このオプションは libcurl が TLS サポート付きでビルドされている場合にのみ指定できます。(通常は SSL ライブラリを使用していればサポート付きでビルドされます。)
- [curl 7.77.0 以降] このオプションは無視されます。(SSLv2 はセキュアではなくなっているため)
- --sslv3
-3
- Protocols: SSL
- Category: tls
- SSL/TLS 通信において Curl が SSLv3 を使うように指定します。現在 SSLv3 はセキュリティ上問題があるため、このオプションは使用すべきではないと考えられます。
- このオプションは --sslv2, --tlsv1, --tlsv1.1, --tlsv1.2 の各オプションを上書きします。
- なお、このオプションは libcurl が TLS サポート付きでビルドされている場合にのみ指定できます。(通常は SSL ライブラリを使用していればサポート付きでビルドされます。)
- [curl 7.77.0 以降] このオプションは無視されます。(SSLv3 はセキュアではなくなっているため)
- --stderr <file>
- Category: verbose
- 標準エラー出力に出力される内容(エラーメッセージや --verbose によって出力される内容など)を <file> で指定したファイルに出力します。<file> に「-」(ハイフン)を指定した場合は、(標準エラー出力ではなく)標準出力に出力します。
- このオプションが複数回指定された場合、最後に指定されたファイルに出力されます。
- --tcp-fastopen
- Category: connection
- [Windows 10/11 版] このオプションは使用できません。(TCP Fast Open に対応していないため。Windows 11 版では指定しても無視されます。)
- TCP ソケットの接続時に TCP Fast Open (RFC 7413) を使用します。libcurl ビルド時に TCP Fast Open 機能を有効にしている場合にのみ利用できます。
- --tcp-nodelay
- Category: connection
- TCP ソケットの接続時に TCP_NODELAY オプションを設定します。TCP_NODELAY オプションは、大まかには「データ送信時にある程度データが貯まってから送信する」という(遅延)送信機能を無効化し、データ送信を即時に行うようにするオプションです。
- なお、Curl はデフォルトで TCP_NODELAY オプションを有効にしているため、--tcp-nodelay オプションを指定する必要はありません。TCP_NODELAY オプションを無効にするには「--no-tcp-nodelay」と指定します。
- --telnet-option opt=val
-topt=val
- Category: telnet
- telnet 接続において各種オプションを指定して送信します。opt にオプション名、val にそのオプションに対する値を指定します。オプションは以下の内容が使用できます。
TTYPE
- ターミナルの種類を指定します。
XDISPLOC
- X display の位置情報を指定します。
NEW_ENV
- 環境変数を指定します。「『変数名』+『,』(コンマ)+『値』」の形式で指定します。
- --tftp-blksize <value>
- Protocols: TFTP
- Category: tftp
- TFTP における BLKSIZE オプションの値を指定します。BLKSIZE オプションは TFTP における送受信時のデータのブロックサイズとなります。<value> には 8 以上 65464 以下の整数を指定します。
- --tftp-no-options
- Protocols: TFTP
- Category: tftp
- TFTP においてオプションを送信しないように指定します。このオプションは一部の古い TFTP サーバーでオプションのやり取りに対応していない場合に有用です。
- このオプションが指定された場合、--tftp-blksize オプションは無視されます。
- --time-cond <time>
-z<time>
- Protocols: HTTP FTP
- Category: http ftp
- HTTP や FTP において、リクエスト時に特定の時刻以降に変更されたデータを取得することを示す情報を付加します。<time> は「Curlにおける日付構文」で示した日付を指定するかファイル名を指定します(日付構文に一致しない場合ファイル名として扱われます)。ファイル名を指定した場合は、「特定の時刻」としてそのファイルの変更日時を利用します。
- また、<time> の先頭に「-」を付けた場合は「特定の時刻以前」に変更されたデータの取得をリクエストします。
- HTTP の場合は「If-Modified-Since」ヘッダー(「-」がある場合は「If-Unmodified-Since」ヘッダー)を利用します。
- --tls-max <version>
- Protocols: SSL
- Category: tls
- TLS 接続において TLS バージョンの最大値を以下の中から指定します。
default
- Curl が内部で持つ最大バージョン(推奨値)を使用します。
1.0
- TLS 1.0 までを使用します。
1.1
- TLS 1.1 までを使用します。
1.2
- TLS 1.2 までを使用します。
1.3
- TLS 1.3 までを使用します。
- なお、このオプションは libcurl が TLS サポート付きでビルドされている場合にのみ指定できます。(通常は SSL ライブラリを使用していればサポート付きでビルドされます。)
- --tls13-ciphers <ciphersuite-list>
- Protocols: TLS
- Category: tls
- [Windows 10/11 版] このオプションは curl 7.85.0 以降 (curl 8.0.1 を含む)で使用できます。
- [curl 7.61.0 以降] TLS 1.3 認証時に使う暗号方式のリストを指定します。指定可能な暗号方式は公式ドキュメントの SSL ciphers をご覧ください。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- なお、このオプションは OpenSSL ライブラリ 1.1.1 以降を使用している場合にのみサポートされます。その他の SSL ライブラリを使用している場合は --ciphers オプションで代用できる可能性があります。
- --tlsauthtype <type>
- Category: tls auth
- [Windows 10/11 版] このオプションは使用できません。(libcurl ビルド時に使った SSL ライブラリでは対応していないため)
- TLS 接続における認証方式を指定します。現時点では「SRP」のみが指定可能であり、--tlsuser オプションや --tlspassword オプションを指定した場合は自動的に「SRP」指定となります。
- なお、このオプションはTLS-SRPをサポートしている OpenSSL または GnuTLS をSSLライブラリとして使用している場合にのみ使用可能です。
- --tlspassword <password>
- Category: tls auth
- [Windows 10/11 版] このオプションは使用できません。(libcurl ビルド時に使った SSL ライブラリでは対応していないため)
- TLS 接続において認証にユーザー名・パスワードを使用する際のパスワードを指定します。--tlsuser が指定されていない場合は効果がありません。
- このオプションは TLS 1.3 においては実質効果がありません。
- --tlsuser <user>
- Category: tls auth
- [Windows 10/11 版] このオプションは使用できません。(libcurl ビルド時に使った SSL ライブラリでは対応していないため)
- TLS 接続において認証にユーザー名・パスワードを使用する際のユーザー名を指定します。--tlspassword も併せて指定する必要があります。
- このオプションは TLS 1.3 においては実質効果がありません。
- --tlsv1
-1
- Protocols: SSL
- Category: tls
- SSL/TLS 接続において SSL は使用せず TLS 1.x (TLS 1.0 以降)を使用するように指定します。--tlsv1.0 は使用する SSL ライブラリによっては「最大バージョン」も固定しますが、こちらのオプションは最大バージョンは(--tls-max を指定しない場合)利用可能な最大バージョンを利用するようにします。
- このオプションは --tlsv1.1, --tlsv1.2, --tlsv1.3 の各オプションを上書きします。
- --tlsv1.0
- Protocols: TLS
- Category: tls
- SSL/TLS 接続において TLS 1.0、あるいは TLS 1.0 以降を使用するように指定します。なお、利用している SSL ライブラリによって「1.0 以降」か「1.0 ちょうど」かが異なります(ほとんどは前者になります)。前者の場合、最大バージョンを指定する必要がある場合 --tls-max オプションで指定します。
- --tlsv1.1
- Protocols: TLS
- Category: tls
- SSL/TLS 接続において TLS 1.1、あるいは TLS 1.1 以降を使用するように指定します。なお、利用している SSL ライブラリによって「1.1 以降」か「1.1 ちょうど」かが異なります(ほとんどは前者になります)。前者の場合、最大バージョンを指定する必要がある場合 --tls-max オプションで指定します。
- --tlsv1.2
- Protocols: TLS
- Category: tls
- SSL/TLS 接続において TLS 1.2、あるいは TLS 1.2 以降を使用するように指定します。なお、利用している SSL ライブラリによって「1.2 以降」か「1.2 ちょうど」かが異なります(ほとんどは前者になります)。前者の場合、最大バージョンを指定する必要がある場合 --tls-max オプションで指定します。
- --tlsv1.3
- Protocols: TLS
- Category: tls
- [Windows 10/11 版] このオプションは curl 7.85.0 以降 (curl 8.0.1 を含む)で使用できます。
- SSL/TLS 接続において TLS 1.3 (以降)を使用するように指定します。なお、TLS 1.3 は一部の SSL ライブラリでのみサポートされている一方、サーバー側も TLS 1.3 に対応していない場合があります。
- --tr-encoding
- Protocols: HTTP
- Category: http
- HTTP において Transfer-Encoding に圧縮(gzip など Curl がサポートする物)を利用したい旨をリクエストします。
- --trace <file>
- Category: verbose
- 送受信時の完全なデータやり取りを、そのデータの内容を示す説明などとともに <file> で指定したファイルに出力します。<file> に「-」(ハイフン)1文字を指定した場合は標準出力に出力します。
- --trace-ascii <file>
- Category: verbose
- --trace オプションと同様ですが、非ASCII文字をダミー文字(「.」)に置き換えて出力します。
- --trace-ids
- Category: verbose
- --trace オプションや --verbose オプションでの出力時に(行ごとに)転送・接続ごとのIDを含めるようにします。--parallel などと組み合わせたときにログが識別しやすくなります。
- --trace-time
- Category: verbose
- --trace オプションや --verbose オプションでの出力時に(行ごとに)タイムスタンプを含めるようにします。
- --unix-socket <file>
- Category: connection
- [Windows 10/11 版] このオプションは使用できません。(Curl 側が未サポート)
- 接続先を指定の Unix Domain Socket ファイルとします。このオプションを使って接続する場合、URLから得られるホストには接続せず、Unixソケットに接続して本来のホストに送信する予定のリクエスト処理をそのまま(Unixソケットに対して)行います。
- --upload-file <file>
-T<file>
- Category: important upload
- 指定のURLにファイルをアップロードします。URLの末尾が「/」で終わっている場合、アップロード時のファイル名は <file> から得ます。HTTP/HTTPS の場合は PUT を使ったアップロードを行います。
- <file> に「-」(ハイフン)を指定した場合は標準入力からデータを読み取ってアップロードします(この場合、ファイル名がURLに含まれていないとファイル名無しとなってしまい失敗する可能性があります)。また「.」(ピリオド)を指定した場合はノンブロッキングモードでアップロードします。
- <file> には glob 形式を使って複数のファイルを指定することができます。例えば「
{hoge.txt,piyo.txt}
」と指定すると「hoge.txt」と「piyo.txt」の2ファイルをアップロードします。また、「data[1-9].png」と指定すれば「data1.png」「data2.png」...「data9.png」をまとめてアップロードすることができます。(glob 形式の詳しい指定方法はここでは省略します。)
- --url <url>
- Category: curl
- リクエストするURLを指定します。このオプションは基本引数の <url> 指定と同じであり、主に設定ファイルで指定したい場合に用いられます。
- --url-query <data>
- Category: http post upload
- [curl 7.87.0 以降] リクエストするURLにクエリ(Query String)を追加します。<data> には以下を除いて --data-urlencode で指定するデータと同じ形式で指定します。
- --data-urlencode での書式との違いとして、<data> の先頭に「+」(例: 「"+a=%20"」)を付加すると、データはエンコードされずにそのまま送信されます。なお、「+」を使った場合は「@」を使ったファイル読み込みは使用できません。
- なお、GET以外のリクエストでも、--url-query を使うとQuery Stringを付加することができます。また、URLに既にQuery Stringがある場合は「&」で連結されます。(ない場合は「?」文字が付加されてそのあとに連結されます。)
- このオプションを複数回使った場合は、そこで指定されたデータが「&」で連結されてURLに付加されます。
- ※ 「+」を先頭に入れる書式を使う場合、文字列に日本語など非ASCII文字が含まれていると、不正なリクエストになってしまう可能性があります。
- --use-ascii
-B
- Protocols: FTP LDAP
- Category: misc
- FTP(およびLDAP)において、ASCII転送モードを利用します。なお、FTPではURLの末尾を「
;type=A
」とすることでASCII転送モードを利用することができます。
- --user user:password
-uuser:password
- Category: important auth
- サーバーの認証に用いるユーザー名およびパスワードを指定します。原則として「『ユーザー名』+『:』(コロン)+『パスワード』」と繋げて指定しますが、「『ユーザー名』」のみを指定した場合は Curl がパスワードを尋ねるプロンプトを表示します。なお、ここでの「サーバーの認証に用いる」は、HTTP の BASIC 認証だけでなく、FTP のユーザー/パスワード認証など、各プロトコルでユーザー名とパスワードを用いて認証を行う場合全般で使用されます。
- 一部システムでのプロセスの一覧表示において、Curl は「--user」のパラメーターを隠す処理を行います(機能的にサポートされている場合)。ただし瞬間的にみえるタイミングが存在する場合があるため完全に隠すことは出来ません。どうしても隠したい場合は --netrc などを用いてファイルから読み込ませるようにするのが適しています。
- Kerberos V5 サーバーを用いた認証をする場合、正しく動作させるために user に Windows のドメイン名を入れる必要があります。
- このオプションは --netrc, --netrc-file, --netrc-optional の各オプションを上書き(無効化)します。
- --user-agent <name>
-A<name>
- Protocols: HTTP
- Category: important http
- HTTP においてサーバーに送信する User-Agent ヘッダーを指定します。既定では Curl であることを示す(Curl バージョンを含む) User-Agent ヘッダーが使用されます。なお、--header オプション(プロキシの場合は --proxy-header オプション)を利用して User-Agent ヘッダーを指定することもできます。
- User-Agent ヘッダーを指定したくない場合は、<name> に「
""
」と空文字列を指定します。逆に User-Agent として空文字列を指定したい場合は「" "
」と半角スペース1文字を指定します。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- --verbose
-v
- Category: important verbose
- Curl による通信時に詳細なやり取りを出力します。出力において「>」で始まる行は Curl によるリクエスト、「<」で始まる行はサーバーからのレスポンス、「*」で始まる行はその他のログを示します。
- 単純にレスポンスヘッダーを出力に含めたい場合は --include オプションを利用するのが適しています(--verbose はリクエストヘッダーも含まれます)。また、--verbose による出力では不十分である場合は --trace オプションおよび --trace-ascii オプションを利用することができます。
- このオプションが指定された場合、それまでに指定された --trace オプションおよび --trace-ascii オプションを上書きします。
- --version
-V
- Category: important curl
- Curl および内部で使用する libcurl のバージョンと、サポートされているプロトコルや有効化されている技術・機能を表示して終了します。(--version が指定された場合はURL指定など他のオプションを無視します。)
- --write-out <format>
-w<format>
- Category: verbose
- 一連の送受信が終わった後に Curl に(標準出力に)出力させたいテキストを指定します。<format> にそのテキストを指定しますが、「
%{variable}
」(「『%
』+『{
』+変数名+『}
』」)を入れ込むことで、その位置に対応する情報をテキスト化したものを入れることができます。(パーセント文字を使いたい場合は「%%
」と2つ重ねます(※ 注釈参照)。)
- また、 <format> には「『
@
』+ファイル名」を指定することもできます。その場合、出力させたいテキスト(書式)を指定のファイルから読み込ませることが可能になります。
- 例:
--write-out "Completed with %{response_code}"
: 「Completed with (レスポンスコード)」を出力させます。
- なお、このオプションによる出力は --silent オプションでも抑制されず、また出力先は --output で指定したファイルではなく必ず標準出力(途中で
%{stderr}
を使っている場合は標準エラー出力)になります。(ファイルなどに出力したい場合は出力リダイレクトかパイプを使います。)
-
使用可能な変数の一覧
「%{variable}
」の variable 部分に指定できる変数名は以下の通りです。
content_type
- Content-Type の値 (存在する場合のみ)
errormsg
- [curl 7.75.0 以降] エラーメッセージ
exitcode
- [curl 7.75.0 以降] Curl プログラムの終了コード
filename_effective
- 実際に使用されるファイル名 (--remote-name オプションや --output オプションを指定した場合に有効で、--remote-header-name オプションを併用した場合に有用です)
ftp_entry_path
- FTP におけるログイン直後のカレントディレクトリ
http_code
- HTTP または FTP におけるレスポンスコード (
response_code
と同一)
http_connect
- プロキシ接続における CONNECT リクエストに対する最後のレスポンスコード
http_version
- 実際に使用された HTTP バージョン
json
- 他のすべての変数と値を key-value として持つ JSON オブジェクトの値
local_ip
- 最後に接続したときのローカル側のIPアドレス
local_port
- 最後に接続したときのローカル側のポート番号
method
- [curl 7.72.0 以降] 最後の接続における HTTP リクエストメソッド
num_connects
- 最後の転送処理において作られた新規接続数
num_headers
- [curl 7.73.0 以降] 最後のレスポンスにおけるレスポンスヘッダーの数 (リダイレクト前の分はカウントされません。またステータスの行はヘッダーではありません。)
num_redirects
- リダイレクトの回数
onerror
- [curl 7.75.0 以降] この変数以降の内容はエラー時にのみ出力されます。
proxy_ssl_verify_result
- HTTPSプロキシ接続におけるSSL証明書検証の結果 (0 が成功を示します)
redirect_url
- HTTP で --location を指定しなかった場合の、リダイレクトが必要である旨のレスポンスを受け取った際のリダイレクト先URL
referer
- [curl 7.76.0 以降] 「Referer」ヘッダーの値 (存在する場合のみ)
remote_ip
- 最後に接続したときのサーバー側のIPアドレス
remote_port
- 最後に接続したときのサーバー側のポート番号
response_code
- HTTP または FTP におけるレスポンスコード (
http_code
と同一)
scheme
- 実際に使用されたURLスキーム(あるいはプロトコル)
size_download
- 合計ダウンロードサイズ
size_header
- 合計ヘッダーサイズ
size_request
- HTTP でのリクエストサイズ
size_upload
- 合計アップロードサイズ
speed_download
- ダウンロード完了時の平均ダウンロード速度
speed_upload
- アップロード完了時の平均アップロード速度
ssl_verify_result
- SSL証明書検証の結果 (0 が成功を示します)
stderr
- [curl 7.63.0 以降] この変数以降の内容は標準エラー出力に出力されます。
stdout
- [curl 7.63.0 以降] この変数以降の内容は標準出力に出力されます。(既定で標準出力に出力されますが、
stderr
指定後に戻す場合に使用します)
time_appconnect
- SSLやSSHなどのハンドシェイク・接続開始から接続完了までの経過時間(秒数)
time_connect
- TCP接続から接続完了までの経過時間(秒数)
time_namelookup
- 名前解決にかかった経過時間(秒数)
time_pretransfer
- ファイル転送が始まるまでにかかった経過時間(秒数)
time_redirect
- リダイレクトが無かった通信の開始までにかかった経過時間(秒数)
time_starttransfer
- ファイル転送で最初のバイトを送信する直前までにかかった経過時間(秒数)
time_total
- 処理全体にかかった経過時間(秒数)
url
- 処理が行われたURL
urlnum
- この処理が何番目のURLかを表す番号 (0 始まりの値)
url_effective
- 処理対象となった実際の(最後の)URL (リダイレクトが行われた場合に有用です)
- [curl 8.3.0 以降] <format> の中に「
%output{filename}」
という記述を置くと、後続する文字列(出力)を filename で指定したファイルに書き込みます。例として、-w "%output{s.txt}%{response_code}"
と指定すると、ステータスコードが s.txt に書き込まれます。また、filename の先頭に「>>」を置くと、ファイルが既に存在する場合に上書きではなく追記で出力を書き込みます。
- このオプションが複数回指定された場合、最後に指定されたものが使用されます。
- ※ バッチファイルで用いる場合、「%」文字が環境変数やパラメーター用の文字として解釈されるため、「
%%
」と重ねて指定します。(パーセント文字を出力に含める場合は「%%%%
」と指定する必要があります。)
- --xattr
- Category: misc
- [Windows 10/11 版] このオプションはサポートされておらず無視されます。(NTFSファイルシステムではサポートされていますが、Curl が対応していません。)
- --output でファイルに出力する際、ファイルの拡張属性に特定のデータを書き込みます。現在では「xdg.origin.url」にURLが書き込まれ、さらに HTTP の場合は「mime_type」に Content-Type が書き込まれます。
- なお、ファイルシステムが拡張属性をサポートしていない場合は警告メッセージが出力されます。