はじめに
Windowsをメイン機として使っているのですが、開発はWSL上で行うのが便利なので、WSLを愛用しています。開発フォルダをWindows側で開きたいときがあるのですが、Windows側でプロジェクトフォルダをエクスプローラーから掘っていくのが地味に面倒です。これをWSL上のコマンドラインから一発で実現できる方法があったので、メモしておきます。
方法
WSLでは、explorer.exe とコマンドを打つことで、Windows側でエクスプローラーを起動することができる便利機能が搭載されています。以下をWSL上で実行すると、Windows側でエクスプローラーが開きます。
explorer.exe .
毎回、explorer.exe と打つのは少々面倒ですので、Aliasに登録しておくと便利です。このとき、wslpath というコマンドを使うとWSL上のディレクトリパスをWindows側のフォルダパスに変換してくれるコマンドと併用するとWindows側のフォルダ名に変換できるのでシームレスな仕組みを構築できます。
$ wslpath --help
wslpath: Invalid argument
Usage:
-a
Force result to absolute path format.
-u
Translate from a Windows path to a WSL path (default).
-w
Translate from a WSL path to a Windows path.
-m
Translate from a WSL path to a Windows path, with '/' instead of '\\'
Example: wslpath 'c:\\users'
結論、~/.bashrc に以下のように書いておくと任意のディレクトリをWindowsエクスプローラーで開くことができます。関数+エイリアスの合せ技です。
# Open current dir in Windows Explorer
openwin() {
explorer.exe "$(wslpath -w "${1:-.}")"
}
alias e=openwin
記入後は、反映しましょう。
source ~/.bashrc
以下のように使えるようになります。
e . # 現在のディレクトリをExplorerで開く e .. # 親ディレクトリを開く e /mnt/c # フルパス指定で開く
補足
WSLには大きく2種類の領域があります。
| 種類 | 実体 | 例 |
|---|---|---|
| Linux側ファイルシステム | WSL専用のLinux領域 | /home/<username> |
| Windows側ファイルシステム | Windowsのディスク | /mnt/c |
WSL上での /mnt/c は「WindowsのCドライブ」、つまりWindowsでいう C:\ をみています。
一方、/home/... のような領域 は「WSL専用領域」となっています。が、Windows側からも覗き見ることが可能で、\\wsl.localhost からアクセスできます。
そのため、WSL上のホームディレクトリをWindowsで開きたい場合も、以下のようにするだけで開くことができます。
e ~ # ホームディレクトリをExplorerで開く
おわりに
知っているとちょっと便利な小ネタでした。
以上
P.S. 役に立った方はビール1杯おごってください。