Linuxコマンド一覧

curlコマンド|ターミナルから HTTP を叩く

__ __ _ _____
\ \ / /__| |_|_ _|__ _ __ _ __ ___
\ \ /\ / / _ \ '_ \| |/ _ \ '__| '_ ` _ \
\ V V / __/ |_) | | __/ | | | | | |
\_/\_/ \___|_.__/|_|\___|_| |_| |_| |_
 
curl を試すためのサンドボックスです。実機のファイルには影響しません。
user@webterm:~/project$
 

curl はターミナルから URL にアクセスするコマンドです。ヘッダーだけ見る `-I`、ファイルに保存する `-o` と `-O`、API を叩く `-X` と `-d` の使い方を、ブラウザ上のターミナルで打ちながら確認できます。

最終更新: 2026-09-11

書式

curl [オプション] URL

指定した URL にアクセスし、返ってきた本文を表示します。

まず打ってみる

$ curl https://example.com
<!DOCTYPE html>
<html>
<head>
    <title>Example Domain</title>
</head>
<body>
    <h1>Example Domain</h1>
    <p>This domain is for use in illustrative examples in documents.</p>
    <!-- This is a simulated response from WebTerm -->
</body>
</html>

返ってきた HTML がそのまま出ます。 このページのターミナルは外に通信せず、応答を組み立てて返しています(最後のコメント行がその印です)。 打ち方の練習と結果の読み方は、実機と同じように試せます。

ヘッダーだけ見る

本文が要らないときは -I です。

$ curl -I https://example.com
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Date: Mon, 07 Sep 2026 08:38:21 GMT
Server: WebTerm/1.0 (Simulated)
Content-Length: 250

1行目の 200 OK が結果です。 「サイトが生きているか」「リダイレクトされていないか」を見るには、これがいちばん速い方法です。

ファイルに保存する

-o で名前を決めて保存します。

$ curl -o page.html https://example.com
$ ls
page.html  README.md
$ head -3 page.html
<!DOCTYPE html>
<html>
<head>

保存中は画面に何も出ません。 URL の最後の名前をそのまま使いたいときは -O(大文字)です。

$ curl -O https://example.com/app.tar.gz
$ ls
app.tar.gz  page.html  README.md

API を叩く

-s(進捗を出さない)を付けると、JSON をそのまま読めます。

$ curl -s https://api.example.com/users
[
  {
    "id": 1,
    "name": "alice",
    "email": "alice@example.com"
  },
  {
    "id": 2,
    "name": "bob",
    "email": "bob@example.com"
  }
]

送るときは -X でメソッド、-d で本文を指定します。 ただし、この2つだけで JSON を送ると断る API も少なくありません。

$ curl -X POST -d '{"name":"ada"}' https://api.example.com/users
{
  "error": "Content-Type must be application/json"
}

ヘッダーを付けないと、curl は本文をフォームの形式として送るからです。 -H 'Content-Type: application/json' で、JSON だと伝えます。

$ curl -X POST -H 'Content-Type: application/json' -d '{"name":"ada"}' https://api.example.com/users
{
  "id": 3,
  "name": "ada"
}

認証などのほかのヘッダーも -H です。

$ curl -H 'Authorization: Bearer TOKEN' https://api.example.com/me
{
  "id": 1,
  "name": "alice",
  "email": "alice@example.com"
}

-H は必要なだけ並べられます。

実務での使いどころ

curl は、アプリが応えているかを確かめるときに打つコマンドです。

場面打ち方
サイトが生きているか見るcurl -I https://example.com
API の応答を読むcurl -s https://api.example.com/users
データを送るcurl -X POST -d '...' -H 'Content-Type: application/json' URL
認証付きで叩くcurl -H 'Authorization: Bearer TOKEN' URL
ファイルを落とすcurl -O https://example.com/app.tar.gz

ping で経路を確かめ、curl でアプリの応答を確かめる。 この2段が、つながらないときの基本の切り分けです。

つまずきやすいところ

URL はクォートで囲むのが安全です。 ?& を含む URL をそのまま書くと、シェルが先に解釈してしまいます。 curl 'https://api.example.com/users?page=2&limit=10' のように囲んでください。

-o を付けると画面には出ません。 「何も起きない」と感じたら、ファイルに落ちていないか ls で確かめてください。

-X POST だけでは JSON になりません。 本文の形式はヘッダーで伝えます。 -H 'Content-Type: application/json' を忘れると、受け取る側が解釈できないことがあります。

秘密の値をそのまま打たないでください。 コマンド履歴に残ります。 トークンは環境変数に入れ、-H "Authorization: Bearer $TOKEN" の形で渡すのが安全です。

手を動かして覚える

webterm.appこのサイト

learn.webterm.app別のサイト

>_WEBTERM LEARN

WebTerm Learn|1つのコマンドから、使える状態へ

コマンドは単体で覚えるより、実際の作業の流れの中で使うほうが身につきます。順番に積み上げていくコースがあります。

コースを見る

関連するコマンド

ping / ssh / cat / tee

よくある質問

-o と -O はどう違いますか?
`-o page.html` は名前を自分で決めて保存、`-O`(大文字)は URL の最後の名前をそのまま使って保存します。
画面に何も出ないのはなぜですか?
`-o` や `-O` を付けると、本文は画面ではなくファイルへ行くからです。保存されたかは `ls` で確かめてください。
ステータスコードだけ知りたいです。
`curl -I URL` でヘッダーだけを取れば、1行目に `HTTP/1.1 200 OK` のように出ます。本文をダウンロードせずに済みます。
API に JSON を送るには?
`curl -X POST -d '{"name":"ada"}' -H 'Content-Type: application/json' URL` の形です。`-X` がメソッド、`-d` が本文、`-H` がヘッダーです。
wget との違いは何ですか?
curl は「1回のリクエストを組み立てて結果を見る」道具、wget は「ファイルを取ってくる」道具です。API を叩くなら curl、まとめてダウンロードするなら wget が向いています。