技術ブログ

curlオプション覚え書き

BASH

いつからだったか、Mac に wget コマンドが標準で入らないようになってから curl コマンドを使うことが増えました。オプションをいつまで経っても覚えられないのでコピペ用にまとめ。随時更新。

目次

  1. よく使う fsL オプション
  2. ファイルのダウンロード
  3. tar ファイルをダウンロードして解凍するワンライナー
  4. Authorization ヘッダを指定する
  5. ベーシック認証
  6. POST
  7. ポート番号を指定して疎通を確認する

よく使う fsL オプション

REST API を叩いて結果を確認したいとき curl -fsL のオプションをよく使います。

curl -fsL https://api.github.com

-f(--fail)
403, 404, 500 などエラーの時に標準出力にエラー文字を出さない

-s(--silent)
進捗の表示をしない

-L(--location)
リダイレクトする

ただ -s オプションは URL が間違っていたり、エラーがあっても何も表示しません。進捗の表示をしないけれどエラーがあったら表示をしたいときには -S(--show-error) を使います。-sS のように s オプションとセットで使います。

ファイルのダウンロード

2 パターンあります。

まずは -O オプション。大文字のアルファベットの O です。リモートのファイル名がそのままローカルのファイル名になります。ファイルのダウンロード先は変更できず、現在のディレクトリにダウンロードされます。

curl -O http://nginx.org/download/nginx-1.19.2.tar.gz

次に -o オプション。小文字アルファベットの o です。出力をファイルに保存します。こちらはダウンロード先のディレクトリやファイル名の変更ができます。

curl http://nginx.org/download/nginx-1.19.2.tar.gz -o /opt/nginx.tar.gz

tar ファイルをダウンロードして解凍するワンライナー

curl コマンドと tar コマンドのあわせ技。-C オプションで解凍先を指定しています。

curl http://nginx.org/download/nginx-1.19.2.tar.gz | tar -zx -C /opt
curl -H "Authorization: <type> <credentials>" https://example.com

<type> には BasicBearer などを指定します。詳細は Hypertext Transfer Protocol (HTTP) Authentication Scheme Registry を参照。

ベーシック認証

curl -u <user:password> https://example.com

-u, --user <user:password> のように指定します。Authorization ヘッダを使ってもよいですが Base64 でエンコードしなくてよいのでこちらのほうが楽。

POST

フォームデータを送信

curl -X POST -d "title=Title&content=Body" https://example.com

json を送信

curl -X POST -H "Content-Type: application/json" -d '{"title":"Title", "content":"Body"}' https://example.com

バイナリデータを送信

curl -X POST -H "cache-control: no-cache" -H "content-disposition: attachment; filename=photo.jpg" -H "content-type: image/jpeg" --data-binary "@/Users/karakaram/Pictures/photo.jpg" https://example.com

ポート番号を指定して疎通を確認する

telnet コマンドが入っていない時などに

curl -I example.com:443

-技術ブログ
-

© 2020 karakaram-blog