curlで取得する・送る・実行するはどう違う?

30秒でわかる答え

curlは、相手と文字やファイルをやりとりする道具です。受け取るだけでなく、保存や送信にも使います。あとに | sh などが続くと、受け取った手順を動かす形になります。

AIに「必要なものを受け取ります」と言われ、curlという名前が出てきた。何かを入れるのか、こちらのファイルを送るのか、気になるかもしれません。

curlは、相手と文字やファイルをやりとりする道具です。 受け取って見せるほか、保存したり、こちらから送ったりできます。あとに| shなどが続くと、受け取った手順をそのまま動かす形になります。

この記事の英語は、画面の一行を読むための例です。自分で打って動かす必要はありません。まず、相手はどこか、そのあと何をするかを分けて見てみます。

受け取る・保存する・送るを見分ける

URLは、ネット上の場所などを表すものです。curlのあとにあるURLから、やりとりする相手を確かめられます。そのほかの指定も一緒に見ます。

見かける表記主に何をする?先に聞くこと
curlとURL相手から受け取った文字などを出すどこから、何を受け取るか
-oとファイル名受け取ったものをファイルへ保存するどこに、何という名前で置くか
-dと文字などこちらから送る何を送るか
-Tとファイル名ファイルを送るどのファイルを、どこへ送るか

代表的な読み方なので、ほかの指定や通信の方法で動きが変わる場合もあります。また、受け取るときも「これをください」というお願いは相手へ送ります。「受け取るだけ」は「何も外へ出ない」という意味ではありません。

保存するなら、同じ名前がないかを見る

ファイルは、文書などを名前を付けて保存したものです。-oで保存するなら、同じ名前のファイルに大切な中身がないかを確かめます。受け取ったもので書きかえてしまうことがあるからです。

たとえば保存先がdownload.txtとだけ書かれていると、どのフォルダへ置くのかが読み手には分かりません。フォルダはファイルをまとめて入れるものです。

どこから受け取り、どのフォルダへ保存しますか。同じ名前のファイルはありますか。

保存できても、ほしかったものを受け取れたとは限りません。プログラムをもらうつもりが、エラーを知らせる文が返ることもあります。ファイルができたことと、中身が合っていることは分けて確かめます。

受け取ったものを、そのまま動かす形もある

curl … | sh

…は途中を省いたしるしです。このまま使う指示ではありません。

|は、前から出た文字を次へ渡す記号です。shやbashは、受け取った文字を指示として読んで動かす道具です。この形では、curlが受け取った文字が、そのままshへ渡ります。

curl … | sh の文字を、左からたどる

  1. curl:受け取る

    URLで指定した相手から、文字を受け取って出す。

  2. |:次へ渡す

    出てきた文字を、右側の道具へつなぐ。中身の確認を待つ場所ではない。

  3. ここで実行につながるsh:指示として動かす

    渡された文字を指示として読む。ファイルや設定を変える手順があれば、それも動きうる。

これは仕組みを読む図で、実行用の手順ではありません。三つの箱は処理の役割を示します。全部の受信が終わってから実行するとは限らず、受け取りながら指示が動くこともあります。
受け取ったあと起きること
画面へ出す返ってきた文字などが見える
ファイルへ保存する保存先の中身を書きこむ
shやbashへ渡す受け取った文字を、指示として読んで動かす

受け取って読むことと、書かれた手順を動かすことはちがいます。 画面に出す形でも、あとに別の指示が付いていないかや、秘密の文字を見せていないかは確かめます。

長い一行の区切りが分からなければ、つなぐ記号の読み方で短い例から追えます。

配っている相手と、中身を確かめる

配っている相手が公式に案内している場所かを調べることと、受け取った手順が何をするかを調べることは、別です。

URLの先頭がhttpsでも、その手順を動かしてよいと決まるわけではありません。HTTPSは通信を守るしくみに関わるもので、中身を信用してよいかまでは決めてくれません。

AIには、こう聞けます。

まだ動かさず、受け取るところと、動かすところを分けられますか。配っている相手と保存先を示し、中の手順が何を変えるか教えてください。

先に保存すれば、中身を読む時間を取れます。ただし、保存しただけで問題がなくなるわけではありません。また、中を見たあと別の場所から取り直して動かすと、確かめたものとは別になることがあります。どのファイルを動かすのかも合わせます。

こちらから送るなら、中に何があるかを見る

送るファイルの名前だけでなく、中身にも目を向けます。たとえば、作業の記録をまとめたファイルには、人の名前や秘密の設定が入っていることもあります。「記録だから見せてよい」とは決まりません。

  • 相手は、自分がたのんだ送り先で合っているか。
  • 送るのは一部の文字か、ファイル丸ごとか。
  • パスワードなど、見せたくないものが入っていないか。
  • 必要な部分だけで済ませられるか。

URLや、通信するときに添える情報の中に、本人だと確かめるための秘密の文字が入ることもあります。何を送るか聞くときも、その文字自体を出してもらう必要はありません。

秘密の文字はかくして、何の情報をどこへ送るか説明してください。

次にcurlが出てきたら、相手の場所と、受け取ったあとの行き先を一つずつ見ます。「保存するのか、動かすのか」が分かれば、次に聞くことをしぼれます。ほかの名前が気になったときは、コマンドの短い一覧から探せます。

curlの取得・送信・実行の参考資料

内容の最終確認日:

この記事について

LAB WHITEBOARD

curlの取得・送信・実行を一文で説明してみよう

「通信先・送信データ・取得後の処理を一続きで判断する」を、いまの自分の言葉で一文にしてみてください。途中の説明でも大丈夫です。