Windowsで使えるcURLいろいろ

Mac使いの人から、「WindowsじゃcURL使えないよね?」と聞かれたので、「最近のWindows 10ならcURLプリインストールされてますよ」と答えると驚かれた。

ほかにもいろいろな方法があるので、ざっと思いつくWindowsでのcURL使い方をメモ。

環境

Windows 10 Pro 64bit Version 1909

プリインストール版

Windows 10 Version 1803から、しれっとプリインストールされるようになっている。

ちなみに、 curl 以外にも tarwget が使えるようになり、Version 1709の時点で ssh も(コマンドプロンプトsshするかはともかく)使える。

バージョン表記は以下。2020/4/18時点でのcURLバージョンは7.69.1だったので、ちょっと古い。

>curl --version
curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL
Release-Date: [unreleased]
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL

Bashインストール

Windows Subsystem for Linuxや、Git for Windowsをインストールすると使えるGit Bashでも、cURLが使用できる。

Git Bashだと、その時点の最新のcURLがついてくる模様。

$ git --version
git version 2.26.1.windows.1

$ curl --version
curl 7.69.1 (x86_64-w64-mingw32) libcurl/7.69.1 OpenSSL/1.1.1f (Schannel) zlib/1.2.11 libidn2/2.3.0 libssh2/1.9.0 nghttp2/1.40.0
Release-Date: 2020-03-11
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz Metalink MultiSSL NTLM SPNEGO SSL SSPI TLS-SRP

Windows PowerShellInvoke-WebRequest

いちおうWindows PowerShellでも curlwget が使えるが、これらは Invoke-WebRequestエイリアス。オプションや実行結果の形式が全く違い、 curl -X POST もエラーになるので使えない。

マルチプラットフォーム化したPowerShell Coreでは、これらのエイリアスは設定されなくなっている。

Windows PowerShellでプリインストール版のcURLを使う

curl.exe のように拡張子までつけて実行するか、 Remove-Item alias:curlエイリアスを削除すればいい。詳しくはこちら。

devadjust.exblog.jp

別途インストール

Windows向けcURLを別途インストールすれば、最新バージョンを使用できる。

Chocolateyでもインストール可能。 Chocolatey Software | cURL 7.70.0

Cygwin

Cygwinインストール時に、cURLをインストールできる。試していないが、確かデフォルトではスキップになっていたと思う。

振り返り

Windowsも進化してるんですよ。これで grepsed も標準で使えるようになればなぁ...