curl は、URL を入力として与えるとデータを送受信できるコマンドラインツールです。 1996 年に Daniel Stenberg が公開し、現在は Linux / macOS / Windows のいずれにも標準搭載されています。
まず押さえたいポイント
HTTP 専用ではない。FTP / FTPS / SFTP / SCP / SMTP / IMAP / LDAP / WebSocket / MQTT など多プロトコル対応- 中核ライブラリは
libcurlで、PHP / Python / C 等の各言語からも呼ばれる - API を叩く、ヘルスチェック、ファイル転送、CI バッチなどに最頻出
- 同じ書き方で
https://...もftps://...もsftp://...も扱える統一性が強み
よく使う基本構文
curl URL— そのまま標準出力に表示curl -o file URL— ファイルに保存curl -O URL— URL のファイル名で保存curl -X POST -d 'key=value' URL— POST 送信curl -H 'Content-Type: application/json' -d '{"a":1}' URL— JSON POSTcurl -u user:pass URL— Basic 認証curl -v URL— 詳細ログ表示 (トラブル時の第一手)curl --ssl-reqd -T file ftp://host/path/— FTPS でアップロード
どんな場面で使うか
- Web API の動作確認 (Postman の代わりに 1 行で済むケース)
- 監視 / 外形監視で
--connect-timeout付きの疎通チェック - CI / バッチで
<a href="/glossary/ftps">FTPS</a>や<a href="/glossary/oss">OSS</a>配布物のダウンロード - レスポンスヘッダや Cookie を見てフレームワークを特定する調査
- インストール用ワンライナー (
curl ... | sh) — 配布側の信用が前提
似たツールとの違い
curl と並んでよく挙がるのが wget と httpie です。
wget— ダウンロード特化。再帰取得 (-r) に強く、ミラーリング用途で便利。一方で POST やヘッダ操作は curl の方が柔軟。httpie(httpコマンド) — HTTP API 操作を読みやすく書ける。JSON の整形が綺麗。HTTP / HTTPS 専用で、FTPS や SFTP には未対応。xh— httpie 互換の Rust 製。高速。Postman/Insomnia— GUI で API を叩くツール。チームで共有しやすいが、CI / 自動化には curl が便利。
curl は 多プロトコル + シェル親和性 + どの環境にもある という万能性が魅力で、API テスト・運用バッチ・トラブル調査の定番です。
実務で気をつけたい誤解
curl -k (--insecure) でサーバ証明書の検証をスキップする例がネット上に多く出回りますが、本番では絶対に使ってはいけません。中間者攻撃に無防備になります。
証明書エラーが出た場合は、エラーの原因 (中間証明書不足 / 期限切れ / ホスト名不一致) を特定して直すのが筋です。
詳しくは curl コマンドと FTPS について で、安全な使い方と CI / バッチ自動化のパターンを整理しています。