3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Windows Subsystem for Linux でファイルを開くワンライナーを、macOS と共通化

Last updated at Posted at 2018-12-30

結論

$ file=mydir/index.html && if type cmd.exe; then cmd.exe /c start ${file}; else open ${file}; fi

環境

  • Windows 10 Pro 17133.1 (April 2018 Update)
  • macOS High Sierra 10.13.4

以下「Windows Subsystem for Linux」を wsl と略します。

ファイルを開く方法

explorer.exeにファイルを渡せば、そのファイルを開いてくれます。

wsl
$ explorer.exe index.html

Windows Subsystem for Linuxでない環境にも対応

Macではexplorer.exe等は無く、代わりにopenコマンドを使います。

mac
$ open index.html

なので、typeコマンドでexplorer.exeの有無を確認する必要があります。

こんなイメージです。

file=index.html
if type explorer.exe; then
  explorer.exe ${file};
else
  open ${file};
fi

ワンライナーにすると以下です。

wsl/mac
$ file=index.html && if type explorer.exe; then explorer.exe ${file}; else open ${file}; fi

ファイルパスを変換する方法

上記の方法でファイル名を指定することができますが、ディレクトリ階層を含むパスは無効になってしまいます。ディレクトリ階層の区切り文字がWindowsとLinuxとで異なるためです。

wslにはwslpathというコマンドがあり、wsl上のLinuxファイルパスをWindowsの形式に変換してくれます。

wsl
$ wslpath -w mydir/index.html #=> mydir\index.html

Windows Subsystem for Linuxでない環境にも対応

先程のif文の中にwslpath -wを含めます。こんなイメージです。

file=mydir/index.html
if type explorer.exe; then
  explorer.exe `wslpath -w ${file}`;
else
  open ${file};
fi

ワンライナーにすると以下です。

wsl/mac
$ file=mydir/index.html && if type explorer.exe; then explorer.exe `wslpath -w ${file}`; else open ${file}; fi

ただしここまで書いたあとに気付いたのですが、explorer.exeではなくcmd.exe /c startを使えば、ファイルパスを変換してくれるためwslpathは不要なようです。
参考: WSLでmacのopenコマンドみたいなこと - Qiita

まとめ

冒頭に書いたようなコマンドになります。

wsl/mac
$ file=mydir/index.html && if type cmd.exe; then cmd.exe /c start ${file}; else open ${file}; fi

URL等も、これで開くことができます。

wsl/mac
$ file='https://www.google.co.jp/' && if type cmd.exe; then cmd.exe /c start ${file}; else open ${file}; fi

参考

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?