AIに「必要なものを受け取ります」と言われ、curlという名前が出てきた。何かを入れるのか、こちらのファイルを送るのか、気になるかもしれません。
curlは、相手と文字やファイルをやりとりする道具です。 受け取って見せるほか、保存したり、こちらから送ったりできます。あとに| shなどが続くと、受け取った手順をそのまま動かす形になります。
この記事の英語は、画面の一行を読むための例です。自分で打って動かす必要はありません。まず、相手はどこか、そのあと何をするかを分けて見てみます。
受け取る・保存する・送るを見分ける
URLは、ネット上の場所などを表すものです。curlのあとにあるURLから、やりとりする相手を確かめられます。そのほかの指定も一緒に見ます。
| 見かける表記 | 主に何をする? | 先に聞くこと |
|---|---|---|
| curlとURL | 相手から受け取った文字などを出す | どこから、何を受け取るか |
| -oとファイル名 | 受け取ったものをファイルへ保存する | どこに、何という名前で置くか |
| -dと文字など | こちらから送る | 何を送るか |
| -Tとファイル名 | ファイルを送る | どのファイルを、どこへ送るか |
代表的な読み方なので、ほかの指定や通信の方法で動きが変わる場合もあります。また、受け取るときも「これをください」というお願いは相手へ送ります。「受け取るだけ」は「何も外へ出ない」という意味ではありません。
保存するなら、同じ名前がないかを見る
ファイルは、文書などを名前を付けて保存したものです。-oで保存するなら、同じ名前のファイルに大切な中身がないかを確かめます。受け取ったもので書きかえてしまうことがあるからです。
たとえば保存先がdownload.txtとだけ書かれていると、どのフォルダへ置くのかが読み手には分かりません。フォルダはファイルをまとめて入れるものです。
どこから受け取り、どのフォルダへ保存しますか。同じ名前のファイルはありますか。
保存できても、ほしかったものを受け取れたとは限りません。プログラムをもらうつもりが、エラーを知らせる文が返ることもあります。ファイルができたことと、中身が合っていることは分けて確かめます。
受け取ったものを、そのまま動かす形もある
curl … | sh
…は途中を省いたしるしです。このまま使う指示ではありません。
|は、前から出た文字を次へ渡す記号です。shやbashは、受け取った文字を指示として読んで動かす道具です。この形では、curlが受け取った文字が、そのままshへ渡ります。
curl … | sh の文字を、左からたどる
- curl:受け取る
URLで指定した相手から、文字を受け取って出す。
- |:次へ渡す
出てきた文字を、右側の道具へつなぐ。中身の確認を待つ場所ではない。
- ここで実行につながるsh:指示として動かす
渡された文字を指示として読む。ファイルや設定を変える手順があれば、それも動きうる。
| 受け取ったあと | 起きること |
|---|---|
| 画面へ出す | 返ってきた文字などが見える |
| ファイルへ保存する | 保存先の中身を書きこむ |
| shやbashへ渡す | 受け取った文字を、指示として読んで動かす |
受け取って読むことと、書かれた手順を動かすことはちがいます。 画面に出す形でも、あとに別の指示が付いていないかや、秘密の文字を見せていないかは確かめます。
長い一行の区切りが分からなければ、つなぐ記号の読み方で短い例から追えます。
配っている相手と、中身を確かめる
配っている相手が公式に案内している場所かを調べることと、受け取った手順が何をするかを調べることは、別です。
URLの先頭がhttpsでも、その手順を動かしてよいと決まるわけではありません。HTTPSは通信を守るしくみに関わるもので、中身を信用してよいかまでは決めてくれません。
AIには、こう聞けます。
まだ動かさず、受け取るところと、動かすところを分けられますか。配っている相手と保存先を示し、中の手順が何を変えるか教えてください。
先に保存すれば、中身を読む時間を取れます。ただし、保存しただけで問題がなくなるわけではありません。また、中を見たあと別の場所から取り直して動かすと、確かめたものとは別になることがあります。どのファイルを動かすのかも合わせます。
こちらから送るなら、中に何があるかを見る
送るファイルの名前だけでなく、中身にも目を向けます。たとえば、作業の記録をまとめたファイルには、人の名前や秘密の設定が入っていることもあります。「記録だから見せてよい」とは決まりません。
- 相手は、自分がたのんだ送り先で合っているか。
- 送るのは一部の文字か、ファイル丸ごとか。
- パスワードなど、見せたくないものが入っていないか。
- 必要な部分だけで済ませられるか。
URLや、通信するときに添える情報の中に、本人だと確かめるための秘密の文字が入ることもあります。何を送るか聞くときも、その文字自体を出してもらう必要はありません。
秘密の文字はかくして、何の情報をどこへ送るか説明してください。
次にcurlが出てきたら、相手の場所と、受け取ったあとの行き先を一つずつ見ます。「保存するのか、動かすのか」が分かれば、次に聞くことをしぼれます。ほかの名前が気になったときは、コマンドの短い一覧から探せます。
この記事について
LAB WHITEBOARD
curlの取得・送信・実行を一文で説明してみよう
「通信先・送信データ・取得後の処理を一続きで判断する」を、いまの自分の言葉で一文にしてみてください。途中の説明でも大丈夫です。

