[Linux] curlコマンドでよく使うオプションまとめ

curlは、LinuxでHTTPリクエストを送信するためのコマンドラインツールです。

よく使われるオプションには以下があります。

  • -X:HTTPメソッドを指定(例:-X POST
  • -d:POSTデータを送信(例:-d "key=value"
  • -H:HTTPヘッダーを追加(例:-H "Content-Type: application/json"
  • -o:レスポンスをファイルに保存(例:-o output.txt
  • -I:ヘッダーのみを取得
  • -L:リダイレクトを追跡
  • -u:ユーザー名とパスワードを指定(例:-u user:password
  • -k:SSL証明書の検証を無効化
この記事でわかること
  • curlコマンドの基本的な使い方
  • よく使うオプションの詳細
  • レスポンスの処理方法
  • APIとの連携手法
  • ファイルのアップロードとダウンロード方法

目次から探す

基本的なcurlコマンドの使い方

curlは、URLを介してデータを転送するためのコマンドラインツールです。

主にHTTP、HTTPS、FTPなどのプロトコルを使用して、リモートサーバーと通信する際に利用されます。

基本的な使い方は非常にシンプルで、以下のようにコマンドを入力するだけです。

curl [オプション] [URL]

例えば、特定のウェブサイトのコンテンツを取得したい場合は、次のように入力します。

curl https://www.example.com

このコマンドを実行すると、指定したURLのHTMLコンテンツが標準出力に表示されます。

curlは、データの取得だけでなく、データの送信やファイルのアップロード、APIとの連携など、さまざまな用途に対応しています。

オプションを組み合わせることで、より柔軟な操作が可能になります。

よく使うcurlオプション

curlには多くのオプションがあり、用途に応じて使い分けることができます。

以下に、よく使われるオプションをまとめました。

スクロールできます
オプション説明
-XHTTPメソッドを指定します。デフォルトはGETですが、POSTやPUTなども指定可能です。
-dデータを送信する際に使用します。POSTリクエストでデータを送る場合に便利です。
-HHTTPヘッダーを追加します。APIリクエストなどで特定のヘッダーを設定する際に使用します。
-oレスポンスを指定したファイルに保存します。標準出力ではなくファイルに出力したい場合に便利です。
-Iレスポンスのヘッダーのみを取得します。サーバーの情報を確認したいときに役立ちます。
-Lリダイレクトを追跡します。URLがリダイレクトされる場合に、最終的なレスポンスを取得できます。
-u認証情報を指定します。Basic認証などでユーザー名とパスワードを送信する際に使用します。
-kSSL証明書の検証を無効化します。自己署名証明書を使用しているサーバーに接続する際に便利です。

これらのオプションを組み合わせることで、さまざまなリクエストを柔軟に行うことができます。

例えば、POSTメソッドでデータを送信し、レスポンスをファイルに保存する場合は、以下のようにコマンドを入力します。

curl -X POST -d "param1=value1¶m2=value2" -o response.txt https://www.example.com/api

このコマンドでは、指定したURLにデータをPOSTし、レスポンスをresponse.txtというファイルに保存します。

レスポンスの処理

curlを使用してリクエストを送信した後、サーバーからのレスポンスを適切に処理することが重要です。

以下に、レスポンスの処理方法をいくつか紹介します。

レスポンスの標準出力

デフォルトでは、curlはサーバーからのレスポンスを標準出力に表示します。

例えば、以下のコマンドを実行すると、指定したURLのHTMLコンテンツがターミナルに表示されます。

curl https://www.example.com

この場合、ウェブページの内容がそのまま出力されます。

レスポンスをファイルに保存

レスポンスをファイルに保存したい場合は、-oオプションを使用します。

以下のコマンドでは、レスポンスをresponse.htmlというファイルに保存します。

curl -o response.html https://www.example.com

このコマンドを実行すると、指定したURLの内容がresponse.htmlに書き込まれます。

レスポンスのステータスコードを確認

レスポンスのステータスコードを確認するには、-Iオプションを使用してヘッダーのみを取得するか、-oオプションと-wオプションを組み合わせて使用します。

以下のコマンドは、レスポンスのステータスコードを表示します。

curl -o /dev/null -w "%{http_code}" https://www.example.com

このコマンドでは、レスポンスのボディは出力せず、HTTPステータスコードのみが表示されます。

レスポンスヘッダーの取得

レスポンスヘッダーを取得するには、-Iオプションを使用します。

以下のコマンドを実行すると、指定したURLのレスポンスヘッダーが表示されます。

curl -I https://www.example.com

このコマンドでは、サーバーからのレスポンスヘッダーがターミナルに出力され、サーバーの情報やコンテンツタイプなどを確認できます。

これにより、リクエストの結果をより詳細に分析することが可能になります。

認証とセキュリティ

curlを使用してAPIやウェブサービスにアクセスする際、認証やセキュリティの設定が必要になることがあります。

以下に、一般的な認証方法やセキュリティ設定について説明します。

Basic認証の使用方法

Basic認証を使用する場合、-uオプションを使ってユーザー名とパスワードを指定します。

以下のコマンドは、Basic認証を用いてリクエストを送信する例です。

curl -u username:password https://www.example.com/protected

このコマンドでは、指定したURLに対してBasic認証を行い、認証が成功すればリソースにアクセスできます。

Bearerトークンの使用方法

Bearerトークンを使用する場合、-Hオプションを使ってAuthorizationヘッダーを追加します。

以下のコマンドは、Bearerトークンを用いてAPIにアクセスする例です。

curl -H "Authorization: Bearer your_token" https://api.example.com/data

このコマンドでは、指定したトークンを使用してAPIにアクセスし、認証が成功すればデータを取得できます。

SSL証明書の検証を無効化する方法

自己署名証明書を使用しているサーバーに接続する場合、SSL証明書の検証を無効化することができます。

-kオプションを使用することで、SSL証明書の検証をスキップします。

curl -k https://self-signed.example.com

このコマンドを実行すると、SSL証明書のエラーが無視され、接続が行われます。

ただし、セキュリティ上のリスクがあるため、信頼できる環境でのみ使用することが推奨されます。

クッキーの送信と保存

クッキーを送信するには、-bオプションを使用します。

また、クッキーを保存するには、-cオプションを使用します。

以下のコマンドは、クッキーを送信し、レスポンスのクッキーを保存する例です。

curl -b cookies.txt -c new_cookies.txt https://www.example.com

このコマンドでは、cookies.txtに保存されたクッキーを送信し、サーバーからのレスポンスで新たに取得したクッキーをnew_cookies.txtに保存します。

これにより、セッション管理や認証の維持が可能になります。

ファイルのアップロードとダウンロード

curlは、ファイルのアップロードやダウンロードを簡単に行うことができる強力なツールです。

以下に、ファイルのアップロードとダウンロードの方法を説明します。

ファイルをアップロードする方法

ファイルをアップロードするには、-Fオプションを使用します。

このオプションを使うことで、フォームデータとしてファイルを送信できます。

以下のコマンドは、file.txtというファイルを指定したURLにアップロードする例です。

curl -F "file=@file.txt" https://www.example.com/upload

このコマンドを実行すると、file.txtが指定したURLにアップロードされます。

ファイルをダウンロードする方法

ファイルをダウンロードするには、-oオプションを使用して、保存先のファイル名を指定します。

以下のコマンドは、指定したURLからファイルをダウンロードする例です。

curl -o downloaded_file.txt https://www.example.com/file.txt

このコマンドを実行すると、指定したURLのファイルがdownloaded_file.txtという名前で保存されます。

複数ファイルのアップロード

複数のファイルを同時にアップロードする場合も、-Fオプションを使ってそれぞれのファイルを指定します。

以下のコマンドは、file1.txtfile2.txtを同時にアップロードする例です。

curl -F "file1=@file1.txt" -F "file2=@file2.txt" https://www.example.com/upload

このコマンドを実行すると、両方のファイルが指定したURLにアップロードされます。

大容量ファイルのダウンロード時の注意点

大容量ファイルをダウンロードする際は、ネットワークの安定性や接続のタイムアウトに注意が必要です。

--limit-rateオプションを使用して、ダウンロード速度を制限することができます。

以下のコマンドは、ダウンロード速度を1MB/sに制限する例です。

curl --limit-rate 1M -O https://www.example.com/largefile.zip

このコマンドを実行すると、指定したURLから大容量ファイルを1MB/sの速度でダウンロードします。

また、-C -オプションを使用することで、途中で中断したダウンロードを再開することも可能です。

curl -C - -O https://www.example.com/largefile.zip

このように、curlを使うことで、ファイルのアップロードやダウンロードを効率的に行うことができます。

APIとの連携

curlは、REST APIとの連携に非常に便利なツールです。

APIにリクエストを送信し、データを取得したり、操作を行ったりすることができます。

以下に、APIとの連携に関する具体的な方法を説明します。

REST APIにリクエストを送信する

REST APIにリクエストを送信するには、curlを使用してHTTPメソッドを指定します。

例えば、GETリクエストを送信する場合は、以下のようにします。

curl -X GET https://api.example.com/resource

このコマンドを実行すると、指定したリソースのデータが取得されます。

POSTリクエストを送信する場合は、-X POSTオプションを使用します。

curl -X POST https://api.example.com/resource

JSONデータを送信する

APIにJSONデータを送信する場合、-HオプションでContent-Typeを指定し、-dオプションでデータを送信します。

以下のコマンドは、JSONデータをPOSTリクエストで送信する例です。

curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1", "key2":"value2"}' https://api.example.com/resource

このコマンドを実行すると、指定したJSONデータがAPIに送信されます。

APIのレスポンスを解析する

APIからのレスポンスは通常、JSON形式で返されます。

curlを使用してレスポンスを取得した後、jqなどのツールを使って解析することができます。

以下のコマンドは、APIからのレスポンスをjqで整形して表示する例です。

curl -s https://api.example.com/resource | jq .

このコマンドでは、-sオプションを使用して進行状況を非表示にし、jqでレスポンスを整形して見やすく表示します。

APIキーを使用した認証

多くのAPIでは、APIキーを使用して認証を行います。

APIキーは、リクエストのヘッダーに含めることが一般的です。

以下のコマンドは、APIキーを使用してリクエストを送信する例です。

curl -H "Authorization: Api-Key your_api_key" https://api.example.com/resource

このコマンドを実行すると、指定したAPIキーを使用してリソースにアクセスします。

APIキーは、セキュリティ上の理由から、外部に漏れないように注意して管理する必要があります。

これらの方法を活用することで、curlを使ってAPIとの連携をスムーズに行うことができます。

応用例

curlは多機能なツールであり、さまざまなシチュエーションで活用できます。

以下に、いくつかの応用例を紹介します。

プロキシサーバーを経由してリクエストを送信

プロキシサーバーを経由してリクエストを送信するには、-xオプションを使用します。

以下のコマンドは、指定したプロキシサーバーを経由してリクエストを送信する例です。

curl -x http://proxy.example.com:8080 https://www.example.com

このコマンドを実行すると、指定したプロキシサーバーを通じてリクエストが送信されます。

タイムアウトを設定してリクエストを送信

リクエストのタイムアウトを設定するには、--connect-timeoutオプションを使用します。

以下のコマンドは、接続タイムアウトを5秒に設定する例です。

curl --connect-timeout 5 https://www.example.com

このコマンドを実行すると、5秒以内に接続できない場合はリクエストが中断されます。

リクエストの詳細なログを取得

リクエストの詳細なログを取得するには、-vオプションを使用します。

以下のコマンドは、リクエストとレスポンスの詳細を表示する例です。

curl -v https://www.example.com

このコマンドを実行すると、リクエストの送信状況やレスポンスのヘッダーなど、詳細な情報がターミナルに表示されます。

複数のリクエストを一度に送信

複数のリクエストを一度に送信するには、curlのコマンドをセミコロンで区切って実行します。

以下のコマンドは、2つのURLに対してリクエストを送信する例です。

curl https://www.example.com; curl https://www.example.org

このコマンドを実行すると、最初のリクエストが完了した後に次のリクエストが送信されます。

FTPサーバーとの通信

curlはFTPサーバーとの通信にも対応しています。

FTPサーバーからファイルをダウンロードするには、以下のようにします。

curl -u username:password ftp://ftp.example.com/file.txt -o downloaded_file.txt

このコマンドでは、指定したFTPサーバーからfile.txtをダウンロードし、downloaded_file.txtとして保存します。

また、FTPサーバーにファイルをアップロードする場合は、-Tオプションを使用します。

curl -u username:password -T local_file.txt ftp://ftp.example.com/

このコマンドを実行すると、local_file.txtが指定したFTPサーバーにアップロードされます。

これらの応用例を活用することで、curlを使ったさまざまな操作が可能になります。

よくある質問

curlとwgetの違いは何ですか?

curlwgetはどちらもデータを転送するためのコマンドラインツールですが、いくつかの違いがあります。

  • 目的: curlは主にAPIとの通信やHTTPリクエストの送信に特化しており、さまざまなプロトコルに対応しています。

一方、wgetは主にファイルのダウンロードに特化しており、再帰的なダウンロードやミラーリング機能が強力です。

  • インターフェース: curlはデフォルトでレスポンスを標準出力に表示しますが、wgetはファイルを自動的に保存します。
  • オプション: curlは多くのオプションを持ち、細かい制御が可能ですが、wgetはシンプルで使いやすいオプションが多いです。

curlでリダイレクトを追跡するにはどうすればいいですか?

curlでリダイレクトを追跡するには、-Lオプションを使用します。

このオプションを指定することで、リダイレクト先のURLに自動的に移動し、最終的なレスポンスを取得できます。

以下のコマンドは、リダイレクトを追跡する例です。

curl -L https://www.example.com

このコマンドを実行すると、リダイレクトが発生した場合でも最終的なレスポンスが取得されます。

curlでSSL証明書のエラーを無視するにはどうすればいいですか?

自己署名証明書や信頼できないSSL証明書を使用しているサーバーに接続する場合、curlでSSL証明書のエラーを無視するには、-kオプションを使用します。

以下のコマンドは、SSL証明書の検証を無効化する例です。

curl -k https://self-signed.example.com

このコマンドを実行すると、SSL証明書のエラーが無視され、接続が行われます。

ただし、セキュリティ上のリスクがあるため、信頼できる環境でのみ使用することが推奨されます。

まとめ

この記事では、curlコマンドの基本的な使い方から、よく使うオプション、レスポンスの処理、認証とセキュリティ、ファイルのアップロードとダウンロード、APIとの連携、応用例まで幅広く解説しました。

これにより、curlを活用してさまざまなネットワーク操作を効率的に行うための手法を学ぶことができました。

今後は、実際にcurlを使って自分のプロジェクトや作業に役立ててみてください。

  • URLをコピーしました!
目次から探す