おれさまラボ

実際に手を動かして理解を深めるブログ。

WSL上のディレクトリパスからWindows側のExplorerを一発で開く方法

はじめに

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杯おごってください。

この続きはcodocで購入