Programming Field

Curl - DOS/コマンドプロンプト コマンド一覧

client URL の略』(Everything curlより)

コマンドライン上でURLを使ったデータのやり取りを行うプログラムです。「cURL」はオープンソースのプロジェクトであり、Windowsに限らず幅広いプラットフォームへの対応が行われているため、Curlプログラムは各プラットフォームでほぼ共通の方法で利用可能です。

Windowsでは、Windows 10向けに Windows 10 April Update (Build 1803; 10.0.17134.*; Insider では 10.0.17063.*) のバージョンから標準で搭載されています。ただしオープンソースの性質上更新(バージョンアップ)はWindowsの更新よりも早いため、最新バージョンを利用したい場合は以下の公式サイトからダウンロードする必要があります。また、Windows 10のそれ以前のバージョンや、Windows 8.1など前バージョンのWindowsで利用したい場合も、同様に別途入手する必要があります。

※ 公式サイト等からダウンロードしてそれを利用する場合は、PATH設定など、プログラムの検索パスに注意する必要があります。

※ 構文・オプション一覧は curl 8.7.1 で利用可能なものに基づいていますが、Windows 10/11 で搭載されているバージョンは以下のようになります。2024年5月時点では最新の Windows にインストールされるバージョンは 8.7.1 になります。

Windows 10/11 で搭載されている curl.exe バージョン
curl バージョンWindows 10Windows 11日付備考
curl 7.55.110.0.17134.* (1803)(10.0.22000.194)初期搭載バージョン
curl 7.79.110.0.18363.2037 (1909)
10.0.19042.1466 (20H2)
10.0.19043.1466 (21H1)
10.0.19044.1466 (21H2)
10.0.22000.434 (21H2)2022/01/11
curl 7.83.110.0.19042.1826 (20H2)
10.0.19043.1826 (21H1)
10.0.19044.1826 (21H2)
10.0.22000.795 (21H2)2022/07/12Windows 11 22H2 は最初からこのバージョン
curl 8.0.110.0.19042.2846 (20H2)
10.0.19044.2846 (21H2)
10.0.19045.2846 (22H2)
10.0.22000.1817 (21H2)
10.0.22621.1555 (22H2)
2023/04/11Windows 11 23H2 は最初からこのバージョン
curl 8.4.010.0.19044.3693 (21H2)
10.0.19045.3693 (22H2)
10.0.22000.2600 (21H2)
10.0.22621.2506 (22H2)
10.0.22631.2506 (23H2)
2023/11/14
curl 8.7.0
(curl 8.7.1)
10.0.19044.4412 (21H2)
10.0.19045.4412 (22H2)
10.0.22621.3672 (22H2)
10.0.22631.3672 (23H2)
2024/05/29

バージョンやプラットフォームによってオプション等が異なる可能性がありますので、その場合は下記curl公式ドキュメントや「curl --help」などの内容をご確認ください。

[PowerShell 5.x まで] PowerShell 5.x までは、既定では「curl」は「Invoke-WebRequest」のaliasとして登録されており、「curl」を使うと「curl.exe」とは異なる挙動になります。このページに記載のCurlコマンドを利用したい場合は .exe を省略せず「curl.exe」と入力する必要があります。

使い方

curlヘルプ

Curl は以下の構文で利用します。

curl[.exe] [<options>] [<url>]

[PowerShell 5.x まで] 前述の通り、PowerShell環境でCurlを使う場合は(既定では)「.exe」は省略できません。

[options] には後述の「--xxx」または「-x」形式のオプションを任意で(0個、1個または複数を組み合わせて)指定します。例えば以下のような形になります。

curl -L --user-agent FooBar https://www.example.com/

なお、オプションはLinux系で一般的な「-」または「--」で始まる文字列を指定する形式であり、大文字・小文字が区別されます。また、一般的なDOS/Windowsのコマンドにおける「/」で始まるオプション指定はできません。そのため、「/?」は「不正なURL扱い」となり、使用法を表示する場合は「--help」(または「-h」)とする必要があります。

注記の無い限り、オプションは直前の URL 指定に対して働きます。また、順番に解釈されるため、多くのオプションでは同じオプションが来た場合上書きされます(--url など一部オプションを除く)。

ON / OFF を切り替えるような(真偽値)オプションは、オプション名の前に「no-」を付けると「指定しない」「無効にする」の意味となります。たとえば「--location」が指定された後に「--no-location」を指定すると「--location」の効果を打ち消します。(これは設定ファイルに書かれたオプションを打ち消す場合にも有用です。)

なお、「-x」形式の1文字のオプションは「-xyz」のように複数の1文字オプションを繋げて記述することができます(ただし追加パラメーターが必要なものは最後にのみ結合可能)。また、1文字オプションで「-o <file>」のように追加のパラメーターが必要な場合は、「-oNUL」のようにオプション名と追加パラメーターの間のスペースを省略することができます。

オプション

1文字オプション

カテゴリー別オプション

※ 後続の「オプション詳細」は長いオプション名のアルファベット順で記載しています。
※ 使用可否については Windows 10/11 版を Windows 上で実行するケースに対する可否となります。Linux 上で実行する場合などは事情が異なります。(可能な範囲で各オプションに条件を記載しています。)

基本引数 (<url>)
<url>
リクエスト先のURLを指定します。
接続オプション
--abstract-unix-socket <file> (※ 利用不可)
接続先を指定の Abstract Unix Domain Socket ファイルとします。
--connect-timeout <seconds>
接続時のタイムアウト時間を指定します。
--connect-to HOST1:PORT1:HOST2:PORT2
指定のホスト・ポートへの接続を別のホスト・ポートへの接続に置き換えます。
--dns-servers <addresses> (※ 使用不可)
ホスト名の名前解決に使用するDNSサーバーのアドレスを指定します。
--doh-cert-status (※ 使用不可)
DNS-over-HTTPS のサーバーに対して --cert-status オプションを指定します。
--doh-insecure
DNS-over-HTTPS のサーバーに対して --insecure オプションを指定します。
--doh-url <url>
ホスト名の名前解決に DNS-over-HTTPS を利用します。
--happy-eyeballs-timeout-ms <millisec>
Curl による Happy Eyeballs (IPv6 と IPv4 のうちいずれかを使用する処理)のタイムアウトを指定します。
--interface <name>
接続時に利用したいインターフェイス名を指定します。
--ipv4 / -4
IPv4 のアドレスを使用するようにします。
--ipv6 / -6
IPv6 のアドレスを使用するようにします。
--keepalive-time <seconds>
TCPソケットに設定する Keep-Alive の時間を指定します。
--local-port <num/range>
接続時に使うローカル側のポート番号を指定(制限)します。
--no-keepalive
TCP における Keep-Alive 設定を無効化します。
--noproxy <no-proxy-list>
接続時にプロキシサーバーを利用しないホスト名を指定します。
--parallel / -Z
URL ごとに処理を並列に実行します。
--parallel-max <num>
並列処理の最大数を指定します。
--preproxy [protocol://]host[:port]
HTTP/HTTPS プロキシサーバーに接続する前に接続する SOCKS プロキシサーバーを指定します。
--proto <protocols>
Curl での通信処理で利用するプロトコル/スキームを指定します。
--proto-default <protocol>
URL内にプロトコル/スキームが指定されていなかった場合の既定の値を指定します。
--proto-redir <protocols>
リダイレクト時の遷移先として許可/拒否するプロトコル/スキームを指定します。
--proxy [protocol://]host[:port] / -x[protocol://]host[:port]
接続時に利用するプロキシサーバーを指定します。
--rate N/unit
複数のリクエストを行う際に時間あたりの最大リクエスト数を指定します。
--resolve host:port:addr
通常の名前解決処理の代わりに指定のアドレスを使うようにします。
--retry <num>
通信結果が「一時エラー」であった場合、最大で指定した回数だけリトライを行います。
--retry-connrefused
「一時エラー」とする通信結果に接続拒否エラーも含めて取り扱います。
--retry-delay <seconds>
リトライタイミングを、指定した秒数を経過した後のタイミングに固定します。
--retry-max-time <seconds>
「リトライ待機時間」が指定した秒数を上回る場合に処理を中止します。
--speed-limit <speed> / -Y<speed>
ダウンロード時の通信速度が一定時間指定値を下回った場合失敗扱いとします。
--speed-time <seconds> / -y<seconds>
ダウンロード時の通信速度が指定時間一定値を下回った場合失敗扱いとします。
--tcp-fastopen
TCP ソケットの接続時に TCP Fast Open を使用します。
--tcp-nodelay
TCP ソケットの接続時に TCP_NODELAY オプションを設定します。
--telnet-option opt=val / -topt=val
telnet 接続において各種オプションを指定して送信します。
--unix-socket <file> (※ 利用不可)
接続先を指定の Unix Domain Socket ファイルとします。
プロキシオプション
--haproxy-protocol
接続時に HAProxy の「PROXY」ヘッダー(version 1)を送信します。
--noproxy <no-proxy-list>
接続時にプロキシサーバーを利用しないホスト名を指定します。
--preproxy [protocol://]host[:port]
HTTP/HTTPS プロキシサーバーに接続する前に接続する SOCKS プロキシサーバーを指定します。
--proxy [protocol://]host[:port] / -x[protocol://]host[:port]
接続時に利用するプロキシサーバーを指定します。
--proxy-anyauth
プロキシ接続で認証を行う際に各種認証方式をすべてトライします。
--proxy-basic
プロキシ接続で認証を行う際にBASIC認証を利用します。
--proxy-ca-native (※ 無視される)
HTTPSプロキシサーバーに接続する際に証明書データをOSから取得して使うようにします。
--proxy-cacert <file>
HTTPSプロキシサーバーに接続する際に用いるCAファイルのパスを指定します。
--proxy-capath <dir>
HTTPSプロキシサーバーに接続する際に用いるCAデータ検索先ディレクトリのパスを指定します。
--proxy-cert <cert[:password]>
HTTPSプロキシサーバーに接続する際に使うクライアント認証のファイルを指定します。
--proxy-cert-type <type>
--proxy-cert で指定する証明書ファイルの形式を指定します。
--proxy-ciphers <list>
HTTPSプロキシサーバーに接続する際に使う暗号方式のリストを指定します。
--proxy-crlfile <file>
HTTPSプロキシサーバーに接続する際に用いる証明書失効リストのファイルを指定します。
--proxy-digest
プロキシ接続で認証を行う際にDigest認証を利用します。
--proxy-header <header/@file>
HTTPでのプロキシ接続時にプロキシサーバーに送る追加のヘッダーを指定します。
--proxy-http2
HTTPSプロキシサーバーに接続する際、HTTP/2 の利用を試みます。
--proxy-insecure
HTTPSプロキシサーバーに接続する際に、SSL通信の過程でセキュリティ上問題がある場合でも接続を続行します。
--proxy-key <key>
HTTPSプロキシサーバーに接続する際の TLS での認証に使う秘密鍵を指定します。
--proxy-key-type <type>
--proxy-key オプションで指定する秘密鍵の形式を指定します。
--proxy-negotiate
プロキシ接続で認証を行う際にSPNEGO認証を利用します。
--proxy-ntlm
プロキシ接続で認証を行う際にNTLM認証を利用します。
--proxy-pass <phrase>
--proxy-key で指定した秘密鍵のパスワードを指定します。
--proxy-pinnedpubkey <hashes> (※ 使用不可)
HTTPSプロキシサーバーに対してその公開鍵を指定の値で検証するように指定します。
--proxy-service-name <name>
プロキシ接続でSPNEGO認証を行う際に用いるサービス名を変更します。
--proxy-ssl-allow-beast
HTTPSプロキシサーバーに対する SSL3 / TLS 1.0 での接続においてセキュリティ脆弱性への回避策を用いないようにします。
--proxy-tlsauthtype <type>
HTTPSプロキシサーバーに対する TLS 接続における認証方式を指定します。
--proxy-tlspassword <phrase>
HTTPSプロキシサーバーに対する TLS 接続においてパスワードを指定します。
--proxy-tlsuser <name>
HTTPSプロキシサーバーに対する TLS 接続においてユーザー名を指定します。
--proxy-tlsv1
HTTPSプロキシサーバーに対する SSL/TLS 接続において TLS 1.x (TLS 1.0 以降)を使用するように指定します。
--proxy-user <user>:<password> / -U<user>:<password>
プロキシサーバーの認証に用いるユーザー名およびパスワードを指定します。
--proxy1.0 <host>[:<port>]
HTTP 1.0を利用してプロキシ接続を行います。
--proxytunnel / -p
プロキシ接続において、実際の接続先がHTTPである場合においても CONNECT 処理を利用します。
--socks4 host[:port]
SOCKS4 プロキシサーバーを指定します。
--socks4a host[:port]
SOCKS4a プロキシサーバーを指定します。
--socks5 host[:port]
SOCKS5 プロキシサーバーを指定します。
--socks5-basic
SOCKS5 プロキシサーバー接続時にユーザー名・パスワードを使った認証を使用できるようにします。
--socks5-gssapi
SOCKS5 プロキシサーバー接続時にGSS-API認証を使用できるようにします。
--socks5-gssapi-nec
GSS-API での保護モードを送り合う通信において、そのデータを保護しないで送受信するようにします。
--socks5-gssapi-service <name> (※ 非推奨)
プロキシ接続でSPNEGO認証を行う際に用いるサービス名を変更します。
--socks5-hostname host[:port]
SOCKS5h プロキシサーバーを指定します。
--suppress-connect-headers
CONNECT 処理でのヘッダー情報を出力しないようにします。
送信/リクエストオプション
--continue-at <offset> / -C<offset>
ファイル転送を途中のバイトから始めます。
--create-file-mode <mode> (※ 実質効果なし)
ファイル作成時のパーミッションを指定します。
--form name=content / -Fname=content
サーバーに指定のデータを送信します。
--form-string name=content
サーバーに指定のデータをそのまま送信します。
--globoff / -g
URLにおける glob 処理を行わないようにします。
--next / -:
オプションの分離を行います。
--path-as-is
URLにおけるパス部分に「./」や「../」が含まれていた場合もそのままリクエストに含めるようにします。
--retry <num>
通信結果が「一時エラー」であった場合、最大で指定した回数だけリトライを行います。
--retry-connrefused
「一時エラー」とする通信結果に接続拒否エラーも含めて取り扱います。
--retry-delay <seconds>
リトライタイミングを、指定した秒数を経過した後のタイミングに固定します。
--retry-max-time <seconds>
「リトライ待機時間」が指定した秒数を上回る場合に処理を中止します。
--upload-file <file> / -T<file>
指定のURLにファイルをアップロードします。
--url <url>
リクエストするURLを指定します。
受信/出力オプション
--create-dirs
出力ファイル名にディレクトリ名が含まれている場合、必要に応じてそのディレクトリも作成します。
--fail-early
途中で処理に失敗した場合は以降の処理を継続しないようにします。
--include / -i
Curl によるレスポンス出力にレスポンスヘッダーも含めます。
--libcurl <file>
「libcurl を使った同じ処理を行うC言語のソースコード」を出力します。
--limit-rate <speed>
アップロード・ダウンロードのスピードを制限します。
--max-filesize <bytes>
ファイルのダウンロード時に適用するファイルの最大サイズを指定します。
--metalink (※ 無視される)
Metalink を使った通信処理を行います。
--no-buffer / -N
レスポンスデータ出力時のバッファリングを無効化します。
--no-clobber
既に存在するファイルを上書きせず、連番のファイルを作成します。
--no-progress-meter
進捗表示を表示しないようにします。
--output <file> / -o<file>
受信したレスポンスをファイルに出力します。
--output-dir <directory>
ファイルに出力する際の出力先ディレクトリを指定します。
--progress-bar / -#
進捗表示を単純なプログレスバー表示のみで行うようにします。
--range <range> / -r<range>
データの部分取得をリクエストします。
--remote-name / -O
URLからファイル名を抽出してそのファイル名を持ったファイルにレスポンスを書き込みます。
--remote-name-all
すべてのURLに対して --remote-name オプションを適用するモードとします。
--remote-time / -R
出力ファイルのタイムスタンプをサーバーから取得できる日時に揃えます。
--remove-on-error
Curl がエラー終了(失敗)するとき出力ファイルを削除します。
--show-error / -S
--silent オプションが指定されていても、エラーメッセージは出力するようにします。
--silent / -s
レスポンス以外何も出力しないようにします。
--stderr <file>
標準エラー出力に出力される内容をファイルに出力します。
--trace <file>
送受信時の完全なデータやり取りをファイルに出力します。
--trace-ascii <file>
--trace オプションと同様ですが、非ASCII文字をダミー文字(「.」)に置き換えて出力します。
--trace-ids
--trace オプションや --verbose オプションでの出力にIDを含めるようにします。
--trace-time
--trace オプションや --verbose オプションでの出力にタイムスタンプを含めるようにします。
--verbose / -v
Curl よる通信時に詳細なやり取りを出力します。
--write-out <format> / -w<format>
一連の送受信が終わった後に Curl に出力させたいテキストを指定します。
--xattr (※ 無視される)
--output でファイルに出力する際、ファイルの拡張属性に特定のデータを書き込みます。
認証オプション
--delegation <LEVEL>
GSS-API を使った Kerberos 認証で、認証情報の委譲に関するオプションを指定します。
--login-options <options> (IMAP, POP3, SMTP)
ログイン時のオプションを指定します。
--netrc / -n
Curl が「.netrc」ファイルを使用するように指定します。
--netrc-file <filename>
「.netrc」ファイルからではなく指定ファイルから認証情報の取得を行います。
--netrc-optional
netrc ファイルからの読み取りを「オプショナル」とします。
--oauth2-bearer <token> (IMAP, POP3, SMTP)
OAuth2 認証の Bearer トークンを指定します。
--sasl-authzid <id>
SASL PLAIN認証処理に対する認可ID(authzid)を指定します。
--sasl-ir
SASL認証をサポートする処理にて、最初のパケットで初期レスポンスをサーバーに送信するようにします。
--user user:password / -uuser:password
サーバーの認証に用いるユーザー名およびパスワードを指定します。
その他の共通オプション
--config <file> / -K<file>
「設定ファイル」を指定します。
--disable / -q
.curlrc ファイルの読み込みを無効化します。
--dump-module-paths
Curl 実行時に読み込まれたDLLのパス一覧を出力します。
--help / -h
コマンドラインで使用できるオプション一覧を含む使い方を表示します。
--manual / -M (※ 使用不可)
Curl のマニュアルを出力します。
--max-time <time> / -m<time>
全体の処理時間の最大(リミット)を指定します。
--version / -V
Curl のバージョン情報を出力します。
HTTPオプション
認証オプション
--anyauth
Curl が認証方式を自動判別するようにします。
--basic
BASIC 認証を用いるよう指定します。
--digest
Digest 認証を用いるよう指定します。
--negotiate
Negotiate (SPNEGO) 認証を用いるよう指定します。
--ntlm
NTLM 認証を用いるよう指定します。
--ntlm-wb (※ 使用不可)
NTLM 認証を用いるよう指定します。NTLM 認証時に winbind ヘルパーを利用するようにします。
--service-name <name>
SPNEGO認証で用いるサービス名を変更します。
送信/リクエストオプション
--compressed (※ 使用不可)
レスポンスを圧縮されたデータにするようにリクエストします。
--cookie <data> / -b<data>
リクエストに含める Cookie を指定します。
--data <data> / -d<data>
POST リクエストする際のデータを指定します。
--data-ascii <data>
POST リクエストする際のデータを指定します。
--data-binary <data>
POST リクエストする際のデータを指定します。改行文字は削られません。
--data-raw <data>
POST リクエストする際のデータを指定します。「@」文字を解釈しません。
--data-urlencode <data>
POST リクエストする際のデータを指定します。一定の規則に従ってURLエンコード処理を行います。
--disallow-username-in-url
URLにユーザー名を含めることをNGとします。
--etag-compare <file>
ファイルに書かれた ETag を使って ETag 付きのリクエストを行い、ETag が一致したら変更なしのレスポンスを受け取るようにします。
--get / -G
GET リクエストでデータを送信します。
--haproxy-protocol
接続時に HAProxy の「PROXY」ヘッダー(version 1)を送信します。
--head / -I
ヘッダーのみを取得します。
--header <header/@file> / -H<header/@file>
追加のリクエストヘッダーを指定します。
--http1.0 / -0
HTTP バージョン 1.0 を使っての通信を試みます。
--http1.1
HTTP バージョン 1.1 を使っての通信を試みます。
--http2 (※ 使用不可)
HTTP バージョン 2 を使っての通信を試みます。
--http2-prior-knowledge (※ 使用不可)
Upgrade ヘッダーや問い合わせを利用せず、直接 HTTP/2 を利用して通信します。
--http3 (※ 使用不可)
HTTP バージョン 3 を使っての通信を試みます。
--http3-only (※ 使用不可)
HTTP バージョン 3 のみを使って通信を行います。
--json <data>
JSON データの送受信を行います。
--junk-session-cookies / -j
Cookie 読み込み時すべての「セッションCookie」を破棄します。
--location / -L
Location ヘッダーがあればそのURLに対してリクエスト(リダイレクト)を行います。
--location-trusted
リダイレクトを行います。リダイレクト後にもその認証情報を含めてリクエストを行います。
--max-redirs <num>
最大のリダイレクト回数を指定します。
--post301
POST リクエストに対するステータスコードが 301 のとき、リダイレクト先でも POST を行うようにします。
--post302
POST リクエストに対するステータスコードが 302 のとき、リダイレクト先でも POST を行うようにします。
--post303
POST リクエストに対するステータスコードが 303 のとき、リダイレクト先でも POST を行うようにします。
--raw
各種転送処理におけるデコード処理を行わず、そのまま出力します。
--referer <URL> / -e<URL>
「リファラー」を指定します。
--request <command> / -X<command>
リクエストメソッドを指定します。
--request-target <target>
実際のリクエストパス名を指定します。
--time-cond <time> / -z<time>
リクエスト時に特定の時刻以降に変更されたデータを取得することを示す情報を付加します。
--tr-encoding
Transfer-Encoding に圧縮を利用したい旨をリクエストします。
--user-agent <name> / -A<name>
User-Agent ヘッダーを指定します。
--url-query <data>
URLに付加するデータ(Query String)を指定します。
受信/出力オプション
--cookie-jar <filename> / -c<filename>
Cookie データを指定のファイルに保存します。
--dump-header <filename> / -D<filename>
レスポンスのヘッダー情報を指定したファイルに保存します。
--etag-save <file>
レスポンスヘッダーに含まれる ETag を指定のファイルに保存します。
--expect100-timeout <seconds>
ステータスコード 100 のレスポンスを受けたときの最大待機時間を指定します。
--fail / -f
エラーのステータスコードが返された場合エラー終了扱いにします。
--fail-with-body
エラーのステータスコードが返された場合エラー終了扱いにしますが、レスポンスを出力します。
--ignore-content-length
レスポンス受信時に Content-Length ヘッダーを無視して受信を行います。
--remote-header-name / -J
ファイル名をヘッダーから得てレスポンスをそのファイル名で保存するようにします。
FTPオプション
認証オプション
--ftp-account <data>
ユーザー認証後に ACCT コマンドでデータを送るように指定します。
--ftp-alternative-to-user <command>
USER コマンドと PASS コマンドの送信に失敗した場合、追加で送るコマンドを指定します。
--krb <level>(※ 使用不可)
認証プロセスに Kerberos 認証を利用します。
送信/リクエストオプション
--append / -a
ファイルをアップロードする際にファイルを上書きするのではなく追加書き込みをするようにします。
--crlf
アップロードするデータの改行コード LF を CR-LF に置き換えます。
--disable-eprt
EPRT および LPRT コマンドの利用を無効化します。
--disable-epsv
EPSV コマンドの利用を無効化します。
--ftp-create-dirs
ファイルアップロード時、アップロード先に不足するディレクトリの作成を行います。
--ftp-method <method>
URLに含まれるファイルへの到達方法を指定します。
--ftp-pasv
パッシブモードを利用するように指定します。
--ftp-port address[:port] / -Paddress[:port]
アクティブモードを利用するように指定します。
--ftp-pret
PASV や EPSV の前に PRET コマンドを送信するようにします。
--ftp-skip-pasv-ip
PASV コマンドに対して受け取った情報にあるIPアドレスを使用しません。
--ftp-ssl (旧式)
SSL/TLS を利用するように指定します。
--ftp-ssl-ccc
ユーザー認証後に CCC コマンドを送るように指定します。
--ftp-ssl-ccc-mode <mode> (※ 無視される)
--ftp-ssl-ccc オプションを指定した際、暗号化処理を閉じるモードを指定します。
--ftp-ssl-control
SSL/TLS を利用するように指定します。ただしデータ通信に対しては通常の接続とします。
--ftp-ssl-reqd (旧式)
SSL/TLS を利用するように指定します。使用できない場合は失敗扱いにします。
--head / -I
ヘッダーのみを取得します。
--quote <command> / -Q<command>
ファイル転送の前に指定のコマンドを実行します。
--ssl
SSL/TLS を利用するように指定します。
--ssl-reqd
SSL/TLS を利用するように指定します。使用できない場合は失敗扱いにします。
--time-cond <time> / -z<time>
リクエスト時に特定の時刻以降に変更されたデータを取得することを示す情報を付加します。
--use-ascii / -B
ASCII転送モードを利用します。
受信/出力オプション
--ignore-content-length
データサイズ取得のための RETR コマンドを送信しません。
--list-only / -l
ディレクトリ内の一覧を取得する際に「名前のみ」を取得するようにします。
SSL/TLS/暗号化オプション
--ca-native (※ 無視される)
証明書データをOSから取得して使うようにします。
--cacert <certfile> (※ 無視される)
証明書のセットを持つファイルを指定します。
--capath <dir> (※ 無視される)
証明書データのファイルが1つ以上格納されたディレクトリを指定します。
--cert <certificate>[:<password>] / -E<certificate>[:<password>] (※ 無視される)
クライアント認証のファイルを指定します。
--cert-status (※ 使用不可)
OCSP stapling を行います。
--cert-type <type> (※ 無視される)
--cert オプションで指定する証明書の形式を指定します。
--ciphers <list-of-ciphers> (※ 無視される)
TLS 認証時に使う暗号方式のリストを指定します。
--crlfile <file> (※ 無視される?)
証明書失効リストのファイルを指定します。
--egd-file <file> (※ 無視される)
(廃止予定) EGDソケットのファイル名を指定します。
--engine <name> (※ 実質使用不可)
暗号処理時に使うエンジンの名前を指定します。
--false-start (※ 使用不可)
「False start」モードの利用を試みます。
--insecure / -k
SSL通信の過程でセキュリティ上問題がある場合でも通信を続行します。
--key <key> (※ 実質意味なし)
TLS での認証や SSH での認証に使う秘密鍵を指定します。
--key-type <type> (※ 実質意味なし)
--key オプションで指定する秘密鍵の形式を指定します。
--no-alpn (※ 無視される)
ALPN を使用しないようにします。
--no-npn (※ 無視される)
NPN を使用しないようにします。
--pass <phrase> (※ 実質意味なし)
--cert または --key で指定したファイルのパスワードを指定します。
--pinnedpubkey <hashes> (※ 使用不可)
接続先の公開鍵を指定の値で検証するように指定します。
--random-file <file>
(廃止予定) 「乱数ファイル」のファイル名を指定します。
--ssl-allow-beast
SSL3 / TLS 1.0 での接続においてセキュリティ脆弱性への回避策を用いないようにします。
--ssl-no-revoke
証明書の期限切れチェックを行わないようにします。
--ssl-revoke-best-effort
証明書の期限切れチェックが「失効サーバーが無いまたはオフライン」で不可能な場合チェックを行わないようにします。
--sslv2 / -2 (※ 非推奨)
SSLv2 を使うように指定します。
--sslv3 / -3 (※ 非推奨)
SSLv3 を使うように指定します。
--tls-max <version>
TLS バージョンの最大値を指定します。
--tls13-ciphers <ciphersuite-list> (※ 使用不可)
TLS 1.3 認証時に使う暗号方式のリストを指定します。
--tlsauthtype <type> (※ 使用不可)
TLS 接続における認証方式を指定します。
--tlspassword <password> (※ 使用不可)
TLS 接続において認証にユーザー名・パスワードを使用する際のパスワードを指定します。
--tlsuser <user> (※ 使用不可)
TLS 接続において認証にユーザー名・パスワードを使用する際のユーザー名を指定します。
--tlsv1 / -1
TLS 1.x (TLS 1.0 以降)を使用するように指定します。
--tlsv1.0
TLS 1.0、あるいは TLS 1.0 以降を使用するように指定します。
--tlsv1.1
TLS 1.1、あるいは TLS 1.1 以降を使用するように指定します。
--tlsv1.2
TLS 1.2、あるいは TLS 1.2 以降を使用するように指定します。
--tlsv1.3 (※ 使用不可)
TLS 1.3 (以降)を使用するように指定します。
DNSオプション
--dns-interface <interface> (※ 使用不可)
DNSサーバーを利用して名前解決する際に使うネットワークインターフェイス名を指定します。
--dns-ipv4-addr <address> (※ 使用不可)
DNSサーバーを利用して名前解決する際に、ベースとなるローカルアドレスを指定します。
--dns-ipv6-addr <address> (※ 使用不可)
DNSサーバーを利用して名前解決する際に、ベースとなるローカルアドレスを指定します。
POP3オプション
--list-only / -l
特定のメールを取得する際に RETR ではなく LIST コマンドを使って情報取得をするようにします。
--ssl
SSL/TLS を利用するように指定します。
--ssl-reqd
SSL/TLS を利用するように指定します。使用できない場合は失敗扱いにします。
SMTPオプション
--mail-auth <address>
メッセージの認証アドレスを指定します。
--mail-from <address>
メールの送信者アドレスを指定します。
--mail-rcpt <address>
宛先アドレスを指定します。
--ssl
SSL/TLS を利用するように指定します。
--ssl-reqd
SSL/TLS を利用するように指定します。使用できない場合は失敗扱いにします。
SFTPオプション (実質使用不可)
--hostpubmd5 <md5>
接続先が提供する公開鍵の MD5 チェックサムを指定します。
--pubkey <key>
公開鍵を指定します。
--quote <command> / -Q<command>
ファイル転送の前に指定のコマンドを実行します。
TFTPオプション
--tftp-blksize <value>
BLKSIZE オプションの値を指定します。
--tftp-no-options
オプションを送信しないように指定します。

オプション詳細

※ 長いオプション名のアルファベット順で記載しています。

ABCDEFGHIJKLMNOPQRSTUVWXYZ

<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 オプションを指定することで省略時のプロトコルを指定することができます。
A
--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 サーバーでは対応していない場合があります。
B
--basic
Protocols: HTTP
Category: auth
HTTP 通信において BASIC 認証を用いるよう指定します。Curl はデフォルトでは BASIC 認証を利用するため、(--user オプションさえ付ければ)明示的に --basic を付ける必要はありませんが、設定ファイルなどで既に別の認証方式(--digest, --ntlm, --negotiate)が指定されている場合は、明示的に --basic を後から付けることで BASIC 認証を利用することができます。
プロキシサーバーに対して適用したい場合は --proxy-basic を使用します。
C
--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」)。その場合、あらゆるホスト名・ポート番号への接続を HOST2PORT2 に置き換えます。一方、HOST2 および PORT2 も空にすることができ(「HOST1:PORT1::」)、その場合は HOST1PORT1 への接続は置き換えないという指定となります。
このオプションは複数回指定することができます。(複数のホスト・ポートのペアをそれぞれ別のホスト・ポートに置き換えることができます。)
--continue-at <offset>
-C<offset>
Category: connection
ファイル転送(送信または受信)を途中のバイトから始めます。<offset> には(0 を先頭とした)何バイト目から始めるかを示すバイト数を指定します。このオプションを FTP でのアップロード処理で使用する場合、SIZE コマンドを利用しません。
なお、レスポンスを途中から取得してファイルに出力する場合に、出力先のファイルが既に存在している場合は、既存のデータをそのままに「追加書き込み」が行われます。
--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 通信において証明書失効リストのファイルを指定します。
このオプションが複数回指定された場合、最後に指定されたものが使用されます。
D
--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モジュールのパスを一覧で出力します。
なお、このオプションは単独で指定する必要があります。
--dump-header <filename>
-D<filename>
Protocols: HTTP FTP
Category: http ftp
HTTP や FTP におけるレスポンスのヘッダー情報を指定したファイル(<filename>)に書き込みます。<filename> に「-」(ハイフン)を指定した場合は標準出力に出力します。
--output で指定したファイルにレスポンスヘッダーも含めたい場合は --include オプションを利用します。
E
--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 秒待機を行います。なお、待機時間を経過した場合は「(全)レスポンスを受信した」扱いで処理が進められます。
F
--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 で確認できます)。
--form name=content
-Fname=content
Protocols: HTTP SMTP IMAP
Category: http upload
サーバーに指定のデータを送信します。HTTP においては --data オプションなどと同様に POST を使ってデータを送信しますが、その際の Content-Type は multipart/form-data (RFC 2388)を利用します。
SMTP / IMAP においては、Multipart メールメッセージとして送信します。
name=content において name にはフォームの名前、content にはそのデータを指定します。content として「ファイルを(ファイルデータとして)送信したい」場合(Webサイトで言うファイル入力欄の送信)は、「『@』文字 + ファイル名」を指定します。一方、「ファイルの中身を値として送信したい」場合(Webサイトで言うテキスト入力欄としての送信)は、「『<』文字 + ファイル名」を指定します。(「@」や「<」で始まる文字列をそのままデータとして送信したい場合は --form-string オプションを利用します。)
このオプションは複数回指定することができます。
具体的なサンプルは公式マニュアルの説明をご覧ください。(Content-Type の指定方法や SMTP における2種類の本文フォーマットの指定方法などが掲載されています。)
--form-string name=content
Protocols: HTTP SMTP IMAP
Category: http upload
--form と同様にデータを送信しますが、content が「@」文字や「<」文字で始まる場合でもそのままデータとして送信します。
--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の通信に対応していない場合は失敗します。
G
--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 を使えばエンコードせずともリクエストは可能ですが、サーバー側がこれらを解釈できる必要があります。)
H
--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 においては、ファイルサイズと最終更新日時のみを出力します。
--header <header/@file>
-H<header/@file>
Protocols: HTTP
Category: http
HTTP において追加のリクエストヘッダーを指定します。「--header "X-Hoge: Piyo"」のように「名前: 値」の形式で指定します。
指定する値を「@」始まりにした場合、「@」以降の文字はファイル名として扱われ、ファイルに書かれたデータがヘッダー情報としてリクエストに付加されます。この際、ファイルには1行ごとにヘッダー情報を記述します
このオプションは複数回指定することができます。(複数のヘッダーを指定することができます。)
--location オプションを利用した場合でリダイレクトがあった場合、リダイレクト後のリクエストに対しても同じヘッダーが付加されます。Authorization ヘッダーなど取り扱いに注意したいヘッダーを用いる場合は、リダイレクト先に付加されても問題ないかを注意する必要があります。
--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 (実験) 扱いであるため、ビルド時に明示的に有効化する必要があります。
I
--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 オプションを上書きします。
J
--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付きの接続を行う際に「新しいセッションで接続する」ようにする目的で使用します。
K
--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」を送信して認証を試みます。サーバーが対応していない場合は通常の(プレーンテキストを使った)認証を行います。
L
--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>...」の書式となります)。
M
--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 と異なり、ダウンロード中の時間も含めた全体の時間をチェックします。そのため、予期せず通信速度が遅くなった場合への対策として使うことができます。
このオプションが複数回指定された場合、最後に指定されたものが使用されます。
N
--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 以下にインストールされている必要があります。
O
--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 で分割された場合を除く)。
P
--parallel
-Z
Category: connection curl
[curl 7.66.0 以降] 複数のURLを指定してデータの送受信を行う際、その処理を並列に行います。--output (-o) を指定しない場合標準出力への出力が混ざる可能性があるため、出力を保存したい場合は --output オプションを併用する必要があります。
このオプションはグローバルオプションとなります(URLごとに指定する必要はなく、--next オプションの有無にかかわらず処理全体に有効となります)。
--parallel-immediate
Category: connection curl
[curl 7.68.0 以降] このオプションを --parallel (-Z) とともに使用すると、並列処理に使えそうな既存の接続(多重送信のストリームなど)があっても、それを使わずに新たな接続を行って処理を進めるようにします。
このオプションはグローバルオプションとなります(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 では環境変数の大文字・小文字は区別されないため、大文字・小文字どちらの表記でも使用されます。)
まとめると以下の順になります。
  1. --noproxy オプション指定があり、そこに書かれたホストに該当する場合 → プロキシサーバーは使用されない
  2. --noproxy オプション指定がなく、no_proxy 環境変数に書かれたホストに該当する場合 → プロキシサーバーは使用されない (no_proxy → 無ければ NO_PROXY の順でチェック)
  3. --proxy オプションがある場合 → 指定のプロキシサーバーが使用される
  4. <protocol>_proxy 環境変数がある場合 → 環境変数の値に書かれたプロキシサーバーが使用される (小文字(*_proxy) → 無ければ大文字(*_PROXY, ただし HTTP_PROXY は除く)の順でチェック)
  5. all_proxy 環境変数がある場合 → その変数の値に書かれたプロキシサーバーが使用される (all_proxy → 無ければ ALL_PROXY の順でチェック)
  6. いずれにも該当しない場合 → プロキシサーバーは使用されない
※ 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-header <header/@file>
Protocols: HTTP
Category: proxy
HTTPでのプロキシ接続時にプロキシサーバーに送る追加のヘッダーを指定します。書式は --header オプションと同じです。なお、実際の接続先が HTTPS の場合は、通信確立時の CONNECT 時にのみ指定したヘッダーが付加されます。
--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 でのみサポートされます。
Q
--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」と同じです。
R
--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-header-name
-J
Protocols: HTTP
Category: output
--remote-name オプションと併せて指定します。HTTP において、ファイル名を「Content-Disposition」ヘッダーから得てレスポンスをそのファイル名で保存するようにします。ファイルは現在のディレクトリに書き込まれます。
サーバーが指定したファイル名と同じファイルが既に現在のディレクトリに存在する場合は、上書きは行わずエラー終了します。また、サーバーがファイル名を指定しなかった場合はこのオプションは何も効果を持ちません(--remote-name によってURLから抽出されます)。
このオプションは信頼できるサーバー・コンテンツに対して使用するべきです。サーバー側がファイル名を指定できるため、システムまたは常駐プログラムが自動で読み込みを行うようなファイル名をサーバーが指定してきた場合、事実上サーバーが任意のデータをコンピューターに読み込ませることができるようになってしまいます。
--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秒、… の計算を利用してリトライを打ち切るかどうか決定されます。
S
--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> に「-」(ハイフン)を指定した場合は、(標準エラー出力ではなく)標準出力に出力します。
このオプションが複数回指定された場合、最後に指定されたファイルに出力されます。
--suppress-connect-headers
Category: proxy
--dump-header オプションや --include オプションを利用してヘッダー情報を出力する場合において、プロキシ接続時にHTTPSへの接続や --proxytunnel オプションの利用で CONNECT 処理を行う際、CONNECT 処理でのヘッダー情報を出力しないようにします(既定ではヘッダー情報出力モードであれば CONNECT のレスポンスヘッダーも出力されます)。
T
--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 オプションでの出力時に(行ごとに)タイムスタンプを含めるようにします。
U
--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文字を指定します。
このオプションが複数回指定された場合、最後に指定されたものが使用されます。
V
--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指定など他のオプションを無視します。)
W
--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 の先頭に「>>」を置くと、ファイルが既に存在する場合に上書きではなく追記で出力を書き込みます。
このオプションが複数回指定された場合、最後に指定されたものが使用されます。
※ バッチファイルで用いる場合、「%」文字が環境変数やパラメーター用の文字として解釈されるため、「%%」と重ねて指定します。(パーセント文字を出力に含める場合は「%%%%」と指定する必要があります。)
X
--xattr
Category: misc
[Windows 10/11 版] このオプションはサポートされておらず無視されます。(NTFSファイルシステムではサポートされていますが、Curl が対応していません。)
--output でファイルに出力する際、ファイルの拡張属性に特定のデータを書き込みます。現在では「xdg.origin.url」にURLが書き込まれ、さらに HTTP の場合は「mime_type」に Content-Type が書き込まれます。
なお、ファイルシステムが拡張属性をサポートしていない場合は警告メッセージが出力されます。

解説

大まかな概要

Curl コマンドラインプログラムは、URLを指定してデータ転送(ダウンロードやアップロードなど)を行うことができるプログラムであり、単純な使用方法としては、単にパラメーターとしてURLを指定するだけで、標準出力にダウンロードしたデータを出力させることができます。

> curl https://www.example.com/
<!doctype html>
<html>
<head>
... (省略)

なお、取得した内容をファイルに出力したい場合は -o オプションを利用します。

また、ダウンロードだけでなくアップロード(データ送信)も可能であるため、例えばHTTP通信ではPOSTをコマンドラインから実行することも可能です。

Curl がHTTPやHTTPSなどのどのプロトコルに対応しているかは「curl -V」でバージョン情報を出力することで確認が可能です。

(以下 Windows 10.0.17763.* での実行例)

> curl -V
curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL
Release-Date: [unreleased]
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL

※ cURLそのものはライブラリである「libcurl」も含むプロジェクトであり、コマンドラインの「curl」は「libcurl」を基盤としています。コマンドラインと区別するためライブラリの方を明示的に「libcurl」と呼び、単に「curl」と呼んだ場合はコマンドラインプログラムを指している場合が多くあります。このページでも、コマンドラインプログラムを単に「Curl」と表記します。

バッチファイルなどからの利用

Curl 自体は単純に利用することができるプログラムですが、その利便性から、Curl をバッチファイルやPowerShellといった各種スクリプトプログラムなどから利用し、取得したデータをもとに処理の分岐や別の処理の実行を行う、ファイル等にまとまったデータを解釈してサーバーにデータを送信するのを自動化する、などもできます。

※ 通信処理をプログラム側で実装するのは、ライブラリが提供されていたとしても単純ではない場合がほとんどであるため、スクリプトに限らず簡易的に実装したいプログラム(C/C++やNode.jsなど)からも利用される場合があります。

PowerShell の例:

# Consoleのエンコードを一時キープ
$enc = [Console]::OutputEncoding
# 取得先の(想定)文字コードに合わせてUTF-8に変更
[Console]::OutputEncoding = [Text.Encoding]::UTF8
# リモートからデータを取得しテキストとして変数に格納
$content = curl.exe -s 'https://www.pg-fl.jp/release.xml'
# Consoleのエンコードを戻す
[Console]::OutputEncoding = $enc
# 取得したテキストをXMLとして解析し XmlDocument を得る
$doc = [xml] $content
# (以降 $doc に対してXMLの操作が可能)

※ 上記はあくまでも例であり、PowerShellでは Invoke-WebRequest (既定での「curl」の alias 先)によって手軽に通信処理ができるため、多くの場合そちらを利用するのが適しています。

Curlにおける日付構文

(参照: libcurl - curl_getdate() man page 3)

--time-cond オプションなどで日付・時刻の指定が必要な場合、以下の書式を1つ、またはスペース(あるいは「,」(コンマ))区切りで複数使って日付・時刻を指定します(ただし日付を複数、時刻を複数指定するような形だと無効な表記となります)。日付指定は必須ですが時刻指定は必須ではなく、無かった場合は「00:00:00」(0時0分0秒; タイムゾーン指定が無ければUTC(GMT)、あればそのタイムゾーンでの 0時0分0秒)として扱われます。また、タイムゾーン指定が無ければUTC(GMT)として扱われます。

日付指定 (calendar date items)
「月」を3文字の英語表記(Jan, Nov など)、「日」を1桁または2桁の数値、「年」を1桁~4桁の数値で記述し、それらを半角スペース・コンマまたは「-」(ハイフン)で繋げて指定します。「年」かどうかは、数字が0、32以上、あるいは3桁以上であれば「年」と判断されますが、区別できない場合は先に来た数値が「日」、後の数値が「年」として扱われます。なお、この方式の場合「月」は数値では指定できません。
例: Jul-7-10 … 2010年7月7日 / 10-Jul-7 … 2007年7月10日 / 2020 Dec 10 … 2020年12月10日
時刻指定 (time of the day items)
いわゆる「HH:MM:SS」の書式、すなわち「時」の2桁(00から23)・「分」の2桁・「秒」の2桁を「:」(コロン)で繋げた表記で指定します。
例: 18:34:56 … 18時(午後6時)34分56秒
タイムゾーン指定 (time zone items)
時刻計算に使うタイムゾーンを3文字表記(UTC, PDT, JST など)や相対時刻表記(-0700 や +0900 など、コロンを入れることは出来ません)で指定します。
例: 12:00:00 JST … 日本時間12時0分0秒(UTCで3時0分0秒) / 03:00:00-0700 … UTCで10時0分0秒
曜日指定 (day of the week items)
3文字の英語表記(Sun, Thu など)を指定できますが、日付指定から自動計算されるため実際には使われません。
数値指定 (pure numbers)
8桁の数値があった場合、それはいわゆる「YYYYMMDD」の数値、すなわち「『年』4桁 + 『月』2桁 + 『日』2桁」として扱われます。範囲外の値が混ざっていた場合は無効な値扱いとなります。
例: 20120304 … 2012年3月4日

組み合わせた例: 「12:30:00 JST, 05-May 2020」…UTC(GMT)で「2020年5月5日3時30分0秒」を示します。(この場合コンマは無くても構いません)

設定ファイルについて

Curl は設定ファイル(Configファイル)からオプションを読み込むことをサポートしています。

Curl は、順に以下の設定(環境変数など)を確認して値が設定されている最初のものを利用して「既定の設定ファイル」を読み込みます。

  1. 環境変数 CURL_HOME に書かれたパス
  2. [curl 7.73.0 以降] 環境変数 XDG_CONFIG_HOME に書かれたパス
  3. 環境変数 HOME に書かれたパス
  4. [Windows 以外] getpwuid 関数が返す pw_dir フィールドのパス
  5. [Windows] 環境変数 APPDATA に書かれたパス
  6. [Windows] 環境変数 USERPROFILE に書かれたパスにある「Application Data」ディレクトリ

この処理で利用可能なディレクトリを決定すると、「既定の設定ファイル」としてそのディレクトリから「.curlrc」ファイル(Windows の場合は「_curlrc」ファイル)を読み込みます。もしここでファイルが見つからなかった場合は、Windows の場合は「curl.exe」があるディレクトリと同じディレクトリを、Unix系の場合はホームディレクトリを使って(もう一度)設定ファイル読み込みを行います。

また、設定ファイルは --config オプションを使用して明示的に指定することもできます。

設定ファイルは以下の方式で記述します。

  • 各オプションを1行ごとに以下の方式で記述する
    1. 各オプションから「--」を取り除いたものを書く
    2. 続けて区切り文字として半角スペース、「=」(等号)、または「:」(コロン)を1文字以上書く
    3. 続けてオプションに指定するパラメーター値を書く
      • パラメーター値は「" "」で囲むことが可能
      • ただし半角スペースを含む場合か、「=」「:」で始まる値である場合は、「" "」で囲んで記述する
      • 「" "」内に限り、エスケープシーケンスとして「\\」「\"」「\t」「\n」「\r」「\v」が利用可能(エスケープシーケンス以外の単独の「\」文字は無視される)
  • 1文字オプションを使う場合は先頭に「-」を付けて記述する
  • (スペース文字を除いて)「#」で始まる行はコメントとして扱われ、無視される
  • (スペース文字以外何も書かれていない行も無視される)

例えば以下のような形になります。(curl ドキュメントから引用しつつ一部説明を追加)

# --- サンプルファイル ---
# 「#」で始まる行はコメント

# 「--url」オプションの利用(以下同様)
url = "example.com"
output = "curlhere.html"
user-agent = "superagent/1.0"

# 別のページの取得
# (新たに --url オプションを入れると別の URL から取得ができる)
url = "example.com/docs/manpage.html"
# 1文字オプションは「-」を付ける
-O
referer = "http://nowhereatall.example.com/"
# --- サンプルファイルここまで ---

サンプル1

curl -LO http://www.pg-fl.jp/music/Simple.sf2

「http://www.pg-fl.jp/music/Simple.sf2」にアクセスし、現在のディレクトリに「Simple.sf2」としてダウンロードします。「-L」があるためリダイレクトに従い、実際には「https://www.pg-fl.jp/music/Simple.sf2」をダウンロードします。

サンプル2

curl ftp://ftp.example.com/foo/bar/ --ssl-reqd -Q"CWD /" -uhoge -Tbaz.dat

FTPサーバー「ftp.example.com」にアクセスし、「/foo/bar」ディレクトリに「baz.dat」をアップロードします(--upload-file (-T) オプションの作用)。接続の際、--ssl-reqd オプションでSSL/TLS接続を強制化しています。また、接続完了時のホームディレクトリがルートでない可能性を考慮して、最初に「CWD /」コマンドを送るように --quote (-Q) オプションで指定します。なお、--user (-u) オプションでユーザー名しか指定していないため、実行時にユーザーに対するパスワードの入力が求められます。

サンプル3 (バッチファイル)

for /F "tokens=1,2 delims=: " %%A in ('curl -s https://www.example.com/_health') do (
    if "%%A"=="Service1" (
        if "%%B"=="OK" exit /b 0
        exit /b 1
    )
)
exit /b 2

[拡張構文] 「https://www.example.com/_health」をリクエストし、レスポンスに「Service1: OK」が含まれていれば終了コード 0 を、「Service1」はあるが「OK」ではない場合は終了コード 1 を、「Service1」がなければ終了コード 2 を返します。Curl はレスポンスを標準出力に出力するため、For コマンドを用いることでテキスト解析することができます。(なお、レスポンス以外が混ざるのを防止するため「-s」オプションを付けています。)

サンプル4

-- checklog.curlrc ファイル

url: "ftp://www.example.com/logs/access_log"
output: "access_log.dat"
url = "ftp://www.example.com/logs/error_log"
output = "error_log.dat"

-- コマンドライン

curl -K checklog.curlrc

設定ファイル「checklog.curlrc」を使って Curl を実行します。設定ファイルに事前にURLを記載しておくことで、逐一URLをコマンドラインから指定するのを省略することができます。(Robocopy の「ジョブファイル」と似た使い方ができます。)

なお、上記ではサンプルとして「=」と「:」を使っていますが、どちらを使っても問題ありません。(分かりやすいものを統一して使うのをお勧めします。)