Windows 10 Anniversary UpdateからサポートしたWSL(Windows Subsystem for Linux)。その結果としてWindows 10上でもBashを始めとするLinuxコマンドが利用可能になった。本連載ではWSLに関する情報や、Bashから実行するシェルスクリプトを紹介する。
UbuntuをopenSuSEに置き換える?
既報のとおりSUSEは、WSL上で動作するLinuxディストリビューションとして、Ubuntuの代わりにopenSUSEをインストールする方法を自社ブログで公開した。現在のBUW(Bash on Ubuntu on Windows)はUbuntuのイメージファイルを、Windowsストアからダウンロードして展開しているものの、WSLの完成度が高まれば高まるほど、各Linuxディストリビューションが正常に動作する「はず」である。
本連載でもWindows 10 Insider Previewの更新に合わせて、WSLの進捗状況を紹介してきたように、バグフィックスやシステムコールのサポート拡充を重ね、完成度は少しずつ改善してきた。今後のWindows 10で利用者が好みのLinuxディストリビューションを使えるか否かは、WSL開発チームの尽力というよりも、Microsoft Windows and Devices GroupがWSL開発にどれだけのリソースを割くのか、または、Microsoft経営陣の戦略がこのままOSS(オープンソースソフトウェア) Loveで突き進むのか、など複雑に絡み合った背景が影響を及ぼしている。
いずれにせよ、2017年早期にリリースする可能性が高いWindows 10 Creators UpdateのWSLは発展途上。Windows 10でLinuxの可用性を享受するのであれば、Windowsコンテナーもしくは、Docker for Windowsを使ったコンテナーに軍配が上がる。だが、冒頭で述べたようにUbuntuをopenSUSEに置き換えるといった自由度の高さは実証済みだ。
そこで筆者も、Windows 10 Insider Preview ビルド15014で試してみた。openSUSEのコンテナーイメージファイルをダウンロードし、展開するまでは動作を確認したが、「lxrun」コマンドで既定ユーザーを再設定する時点でOSがハングアップ。単純にBashを起動するだけでもハングアップするため、展開したopenSUSEのイメージと意図どおりに連携しないからだろう。本件については、またタイミングを見てチャレンジし、読者諸氏へご報告したい。
ダウンロードしたopenSUSEのコンテナーイメージを展開中の様子。記事を投稿したHannes Kühnemund氏は「エラーは気にしなくてよい」と説明しているが、OSがハングアップする理由ではないだろうか |
CSVデータとしてExcelで読み込む
さて、BUWは文字どおりWindows 10上で動作するため、デスクトップアプリの連携が1つの魅力となる。ここ数回の連載で取り上げたコマンド「du」の出力結果を可視化する場合も、普段からなじみ深いExcelを使った方が便利だろう。本来であれば、Excel側の自動化にもチャレンジしてみたかった。だが、筆者はVBAマクロに関して精通していないため、シェルスクリプト側で簡単な加工を施すことにした。
いつもどおり任意のテキストエディターで、下図に示したコードをコピー&ペーストした後に、パスなどをご自身の環境に合わせて変更し、chmodコマンドで実行モードを付与してから、シェルスクリプトを実行してほしい。
#!/bin/bash
TargetDir=/mnt/c/Windows/*
TmpFile=/mnt/c/Users/kaz/Desktop/foo.csv
echo -e 'Directory\tSize' > $TmpFile
du -s $TargetDir 2>/dev/null | sort -n | tail -10 | awk '{ print $2 "\t" $1}' >> $TmpFile
前回のシェルスクリプトと異なるのは、awkコマンドを利用し、出力結果の行を入れ替えている。同スクリプトを実行すると、デスクトップに「foo.csv」ファイルが生成されるので、Excel起動後にCSVファイルのインポートを実行すればよい。
インポートを終えたら取り込んだ内容を範囲選択し、任意のグラフを挿入する。下図は「おすすめグラフ」で推奨された「集合横棒」を利用しているが、このあたりはお好みのグラフをお選び頂きたい。
必要であれば、CSVファイルに含まれる「/mnt/c/」などの文字列は、cutコマンドを使って「cut -c 6-」をパイプ処理に追加すれば、1~5文字目を削除して出力するため、見栄えもよくなるだろう。
阿久津良和(Cactus)