« Bash on Ubuntu on Windows 14.04LTSから16.04LTSにアップグレード | トップページ | jQueryとPython間におけるJSONPを用いたやりとり »

2017.01.09

Bash on Ubuntu on Windows -- WindowsとUbuntuの連携機能を使ってみる

明けましておめでとうございます。本年もよろしくお願い申し上げます。

Bash on Ubuntu on Windows (Windows Subsystem for Linux (WSL))でUbuntuからWindowsアプリケーション、又は、WindowsからUbuntuのアプリケーションを起動させることができます。(恥ずかしながら、つい先日知りました…)

以下の記事を参考に試してみました。
WSL その50 - WindowsからLinuxコマンドを呼び出すコマンドの実行例:kledgeb
WSL その51 - BashからWindowsコマンドを呼び出すコマンドの実行例:kledgeb
WSL その52 - BashからWindowsバイナリーを起動する機能の有効・無効を切り替えるには:kledgeb
WSL その53 - WindowsとBashの相互運用:kledgeb
WSL その59 - Bashからもっと簡単にWindowsアプリを起動できるようになった:kledgeb
ここのサイトの情報は大変充実していて助かりました。ありがとうございます。

その他、開発者による解説サイトはこちら。
Windows and Ubuntu Interoperability:Microsoft Developer

上述のサイトでは、Win32アプリとUbuntuアプリケーションの間でパイプで連携する方法等が解説されています。
Ubuntuのperlから作成したcsvファイルをWindowsで起動したExcelで読み込むデモを試してみたので、その経過をメモ。

なお、実行環境はBuild 14986です。

test01.pl


#/usr/bin/perl
use strict;
use Math::Trig;
#
print "x-axis,y-axis\n";
for (my $i = -2*pi; $i <= 2*pi; $i += pi/100){
print "$i,", sin($i), "\n";
}

UbuntuとWindows相互のファイル受け渡し用に作業ディレクトリを作成します。
例えば、Windowsのドキュメントフォルダ配下に\work\TMPフォルダを作成し、Ubuntuでは~/work/TMPにシンボリックを張ることにして、Ubuntuから以下のコマンドを実行します。


$ mkdir ~/work
$ cd ~/work
$ ln -s /mnt/c/Users/****/Documents/work/TMP .

ここで、"****"は自分のホームディレクトリ名です。

Microsoft Officeアプリケーションにパスを通します。
オフィスのバージョンによりますが、例えばOffice 2013の場合、 ~/.bashrcに、


export PATH="$PATH:/mnt/c/Program Files/Microsoft Office 15/root/office15"

を追加します。

そして、以下のシェルスクリプトを作成して実行します。
test01.sh


#!/bin/bash
#
perl test01.pl > ~/work/TMP/test01.csv
excel.exe "C:\\Users\****\Documents\work\TMP\test01.csv" &

このシェルスクリプトを実行すると、Excelからcsvファイルを開くことができます。
Excelからcsvファイルを開いて、グラフを描画してxlsxファイルとして保存し直したときの画面がこちら。
2017010801

なお、悩んだところとして、Windowsにおける自分のホームディレクトリに漢字が入っていると、


$ TMP_PATH1=$(cmd.exe /c "echo %HOMEPATH%")
$ echo $TMP_PATH1

すると、きちんとホームディレクトリ名が取得できているのですが、

$ TMP_PATH2="$TMP_PATH1\work"
$ echo $TMP_PATH2

とすると、正常に動作しません。ホームディレクトリ名に漢字が入っていないアルファベット文字だとちゃんと動くので、変数に漢字が入っていると不具合が発生しているように思います。

|

« Bash on Ubuntu on Windows 14.04LTSから16.04LTSにアップグレード | トップページ | jQueryとPython間におけるJSONPを用いたやりとり »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1024423/69172054

この記事へのトラックバック一覧です: Bash on Ubuntu on Windows -- WindowsとUbuntuの連携機能を使ってみる:

« Bash on Ubuntu on Windows 14.04LTSから16.04LTSにアップグレード | トップページ | jQueryとPython間におけるJSONPを用いたやりとり »