Windows 10 Ver.1803（RS4）のプレビュー版、Build 17063からはWindowsの標準コマンドとしてcurlとtarが入った。

Win32のバイナリとしてcurlとtarのプログラムが追加された

注意してほしいのは、これはWindows Subsystem for Linux（WSL）のコマンドではなく、コマンドプロンプトウィンドウで実行可能なWin32バイナリのプログラムだ。このため、Linuxディストリビューションに含まれているcurlやtarとまったく同一というわけではない。また、WSLにも同名のコマンドがあることにも注意されたい。

curlは、コマンドラインからhttpプロトコルなどを利用するためのオープンソース系のコマンドで、Linuxディストリビューションの多くに含まれる。tarはUnix系オペレーティングシステムで使われていたファイルアーカイブコマンドで、Linuxディストリビューションにも含まれている。

curlは、たとえばインターネット上のダウンロードURLなどのアクセスに利用してウェブブラウザを開くことなくファイルをダウンロードしたり、HTTPを使ったサービスのテストなどに利用する。curlという名前は「See URL」に由来し「カール」と読む（警察犬とは関係がない）。また「cURL」と表記されることもある。

これに対してtarは、“Tape ARchives”の略で、もともとは磁気テープに複数ファイルをまとめて記録するためアーカイブファイル形式（TARファイル形式）を扱うためのコマンドで、Unixに搭載されるようになったのは1979年とかなり古い。しかし、フロッピーディスクなどのリムーバブルメディアへの記録やメールやネットワークによるファイル転送の際にも利用され、いまでも使われているコマンドだ。

では、2つのコマンドを細かく見ていくことにしよう。なお、Linuxなどで標準的なcurl、tarに対して、Windowsに移植されたcurl、tarを以後「Windows版curl」「Windows版tar」と表記し、前者はそのままcurl、tarと表記する。

curlコマンドの使い方

curlは、HTTPやFTPなど20以上のプロトコルに対応しており、URLを解釈してネットワークアクセスを行なう。たとえば、HTTPを使えば、ウェブサーバーに対してリクエストができ、ページデータの取得やファイルのダウンロードが可能。ウェブサーバーを使った各種のサービスが動いているかどうかの「生存確認」から、応答が正しいのかどうかといったテストをすることも可能だ。コマンドラインプログラムなので、GUIを使わずに各種のプロトコルによる通信が可能になる。

プレビュー版に搭載されているのは、curl Ver.7.55.1だが、Linux上のものと比較するとWindowsのファイル共有プロトコルであるSMB（Server Memory Block）プロトコルなど、一部のプロトコルに対応していない。対応プロトコルなどは「-V」オプションを使ってバージョン表示を行うことで見ることができる。\下の画面はWindows版とWSL上のcurlの実行結果である。

curlは、多数のプロトコルをサポートするため、非常に多くのコマンドラインオプションを持つ。Windows版curlでは、「--help」で210個のオプションが表示される。このため、ここでは簡易な使い方のみを解説し、あとはインターネット検索などでcurlコマンドの使い方を学んで欲しい。

curlコマンドでは、通信相手をURLで指定する。たとえば、

curl http://ascii.jp/elem/000/000/839/839756/ -o winfo.html

とすれば、Windows Infoの目次ページをwinfo.htmlというファイルに保存できる。PDFなどのダウンロードリンクなどの場合、「-O」とすることで、ダウンロードするPDFのファイル名をそのまま指定できる。

curl -O https://www.intel.co.jp/content/dam/www/public/us/en/documents/datasheets/core-i7-900-ee-and-desktop-processor-series-datasheet-vol-1.pdf

また、ウェブサイトが動いているかどうかなどを調べるならHTTPのヘッダ部分のみを見ればいいだろう。

curl -I http://ascii.jp/elem/000/000/839/839756/

tarコマンドの使い方

一方のtarコマンドは、指定した複数のファイルを1つのTARファイル形式にアーカイブするコマンドだ。

Windows版tarコマンドは、BSD系UnixオペレーティングシステムFreeBSDで実装されたbsdtarをベースにしたもので、多くのLinuxディストリビューションに搭載されているGNU tarとはtarファイル形式での互換性はあるが、オプションなどが違う。

最初に指定するのはアーカイブを「作成」「追加」「表示」「更新」「取り出し」するオプション文字だ。

意味 オプション文字 作成 c 追加/置換 r 表示（リスト） t 更新 u 取り出し x

tar --helpで表示されるオンラインヘルプでは、これらのオプション文字には「-」（ハイフン）が必要なように記載されているが、歴史的な経緯からtarの最初のオプションはハイフンなしで動作する。

これは、Unixでまだオプション指定の方法が定まっていない1979年のUnix v7用に作られたからで、以後、ハイフンを使うオプション指定が一般的な形式となったときにも、互換性のためにハイフンなしのオプション指定も残された。もしハイフンを必須としてしまうと、過去に作られたスクリプトなどが動作できなくなるためだ。

オプションが多いが、一般的な利用では、以下の３つのパターンになる。

作成：tar cvf アーカイブファイル名 対象

表示：tar tvf アーカイブファイル名

取り出し：tar xvf アーカイブファイル名 対象

オプションのうち「v」は詳細な表示を意味する。このためスクリプト内などで使う場合には省略してかまわない（--helpでオンラインヘルプを表示できる）。

「f」は出力先ファイル名を指定するオプション。tarは、もともとは磁気テープ装置を対象としていたため、テープデバイス名が省略値として使われる。Windows版tarでは「\\.\TAPE0」である。これは、TAPE0というデバイスを意味し、「\\.\」は、デバイス名として強制するためのWindowsの表記方法である。なお、このデバイス名は、Unix系OSの「/dev/～」という記述をWindowsに直したもの。多くのWindowsではこうしたデバイスは存在しないため、「f」オプションは必ず指定する必要がある。ハイフンを使って「-cvf」、「-tvf」、「-xvf」と表記してもかまわない。

なお、tarには本来圧縮機能がなく、圧縮／解凍は別コマンドで実行していた。このため、圧縮したtarファイル形式は、「arcfile.tar.Z」（compressで圧縮したとき）のようにWindowsでいう拡張子をつなげたファイル名にする。もっとも、Unix系ではファイルを拡張子で区別するという慣習はなく、ファイル先頭のマジックナンバーなどで識別していたため、あくまでも命名に関するルールでしかない。

Windows版のtarには、圧縮のためのオプションがあるが、その指定により拡張子が自動的に付けられるわけではないことに注意する。たとえばcompress互換の圧縮ならば、

tar cvzf arc.tar.Z 対象ファイル

などとファイル名にtarファイルであることと、compressで圧縮されたことを意味する「Z」を付ける。拡張子を付けるのはあくまでも人が簡単に判別できるようにするためである。Windows系のアーカイバーでは、拡張子をみて解凍処理を変更するものがあるため、注意すべきだ。