Linux curl コマンド
curl コマンドとは
curl(Client URL)は、Linux/Unix システムでデータを転送するための強力なコマンドラインツールです。HTTP、HTTPS、FTP、SFTP など複数のプロトコルをサポートしており、開発者やシステム管理者の日常業務に欠かせないツールです。
curl の主な特徴
- マルチプロトコル対応:ほぼすべての主流ネットワークプロトコルをサポート
- 非対話式操作:純粋なコマンドラインツールで、スクリプトや自動化タスクに最適
- 多機能:ファイルのアップロード・ダウンロード、フォーム送信、Cookie 処理などをサポート
- クロスプラットフォーム:Linux、macOS、Windows で使用可能
基本構文
curl コマンドの基本的な構文形式は次のとおりです:
curl [options] [URL...]
パラメータの説明
options:curl の動作を制御するためのさまざまなオプションパラメータURL:アクセスする 1 つまたは複数の URL
よく使うオプションパラメータの詳細
1. 基本的なリクエスト制御
| オプション | 説明 | 例 |
|---|---|---|
-X |
HTTP メソッドを指定 | curl -X POST https://example.com |
-d |
POST データを送信 | curl -d "name=John" https://example.com |
-G |
-d データを GET パラメータとして送信 | curl -G -d "q=keyword" https://search.com |
-H |
リクエストヘッダーを追加 | curl -H "Content-Type: application/json" https://api.com |
2. 出力制御
| オプション | 説明 | 例 |
|---|---|---|
-o |
出力をファイルに保存 | curl -o output.html https://example.com |
-O |
リモートのファイル名を使用して保存 | curl -O https://example.com/file.zip |
-s |
サイレントモード(進捗状況を表示しない) | curl -s https://api.com/data.json |
-v |
詳細な通信プロセスを表示 | curl -v https://example.com |
3. 認証とセキュリティ
| オプション | 説明 | 例 |
|---|---|---|
-u |
ユーザー名とパスワードによる認証 | curl -u user:pass https://secure.com |
-k |
SSL 証明書の検証を無視 | curl -k https://self-signed.com |
--cacert |
CA 証明書を指定 | curl --cacert cert.pem https://secure.com |
4. その他の便利なオプション
| オプション | 説明 | 例 |
|---|---|---|
-L |
リダイレクトを追跡 | curl -L https://short.url |
-I |
ヘッダー情報のみを取得 | curl -I https://example.com |
--limit-rate |
転送速度を制限 | curl --limit-rate 100K https://largefile.com |
実用的な例の解説
例1:ウェブページの内容を取得する
例
curl https://www.example.com
この最も簡単なコマンドは、指定した URL の内容を取得してターミナルに表示します。
例2:ファイルをダウンロードする
例
curl -O https://example.com/files/document.pdf
-Oオプションはリモートファイルの名前(document.pdf)を使用してローカルに保存します。
例3:POST リクエストを送信する
例
curl -X POST -d "username=admin&password=123456" https://api.example.com/login
このコマンドは、ログイン API にユーザー名とパスワードを送信します。
例4:JSON データ付きの POST リクエスト
例
curl -X POST -H "Content-Type: application/json" \
-d '{"name":"John","age":30}' \
https://api.example.com/users
-d '{"name":"John","age":30}' \
https://api.example.com/users
例5:Cookie を使用してセッションを維持する
例
curl -c cookies.txt -b cookies.txt https://member.example.com
-cサーバーが返した Cookie を保存-b保存した Cookie を送信
高度な使い方
1. ファイルアップロード
例
curl -F "file=@localfile.txt" https://upload.example.com
-Fmultipart/form-data タイプのフォーム送信に使用され、ファイルアップロードでよく使われます。
2. ウェブサイトの応答時間をテストする
例
curl -o /dev/null -s -w "Connect: %{time_connect} TTFB: %{time_starttransfer} Total: %{time_total}\n" https://example.com
このコマンドは次の項目を出力します:
- 接続時間
- 最初のバイトまでの時間 (TTFB)
- 合計所要時間
3. プロキシサーバーを使用する
例
curl -x http://proxy.example.com:8080 https://target.com
-xオプションでプロキシサーバーのアドレスとポートを指定します。
よくある質問
Q1: curl の証明書検証エラーを解決するには?
SSL 証明書エラーが発生した場合は、一時的に-kオプションで検証を無視できます(本番環境での使用は推奨されません)。または CA 証明書を適切に設定します:
例
curl --cacert /path/to/cert.pem https://secure-site.com
Q2: リクエストヘッダーとレスポンスヘッダーを表示するには?
使用する-v 或 -iオプション:
例
curl -v https://example.com # 詳細な通信プロセスを表示
curl -i https://example.com # レスポンスヘッダーのみ表示
curl -i https://example.com # レスポンスヘッダーのみ表示
Q3: ダウンロード速度を制限するには?
使用する--limit-rateオプション(単位は K、M が使用可能):
例
curl --limit-rate 200K -O https://example.com/largefile.iso
実践練習
- 公開 JSON API のデータをダウンロードしてファイルに保存してみる
- curl を使用してローカル開発サーバーの応答時間をテストする
- 認証ヘッダー付きの GET リクエストを送信する練習をする
- テストファイルを無料の HTTP bin サービスにアップロードしてみる
例
# 練習例
curl https://httpbin.org/get
curl -o test.json https://api.github.com/users/octocat
curl -X POST -F "file=@test.txt" https://httpbin.org/post
curl https://httpbin.org/get
curl -o test.json https://api.github.com/users/octocat
curl -X POST -F "file=@test.txt" https://httpbin.org/post
まとめ
curl は Linux システムで強力なネットワークデータ転送ツールです。この記事の学習を通じて、以下を習得したはずです:
- curl の基本構文とよく使うオプション
- さまざまな一般的なシナリオでの使用例
- 高度な機能と実用的なテクニック
- よくある問題の解決方法
より詳細な情報については、curl の公式ドキュメントを参照するか、man curlを使用してマニュアルページを表示できます。実践経験を積むにつれて、curl で実行できるタスクはこれらの基本機能にとどまらないことがわかるでしょう。