Windows Tips

【WSL】パスのフォーマットを変換する wslpath コマンドの使い方

投稿日:2018年7月26日 更新日:

1. はじめに

Windows と Linux とでは「パス」のフォーマットが違うため、WSL (Windows Subsystem for Linux) では、パス関連の問題が起きがちです。

例えば、Windows において以下のように表現されるパスがあったとします。

C:\Users\foo\work

同じパスを WSL側から表現すると、こうなります。

/mnt/c/Users/foo/work

こちらは、Linux でのパスフォーマットです。フォルダ階層の区切り文字も違いますし、Cドライブは /mnt/c と表現されます。

WSL 上で何か処理を行った場合、WSL は内部でこのパスフォーマットの変換をやってくれるため、あまり問題が起きるようなことはありません。しかし、それでも明示的なパスフォーマット変換を行いたい場合のためにツールが用意されています。

それが、wslpath コマンドです。

2. wslpath コマンド

wslpath は標準で使えるコマンドで、Windows と WSL とのパスフォーマット変換を行うことができます。

オプション

どちらからどちらへの変換なのか、オプションで指定できるようになっています。

※ 通常、コマンドには「使い方」を表示するためのオプションや、manページが用意されているのですが、今のところなぜか用意されていないようです。Release Notes | Microsoft Docs には、以下のように Usage (使い方) が載っています。

wslpath 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 ‘\\’

  EX: wslpath ‘c:\users’

順番に説明します。

-a オプション

  • WSL のパスフォーマットで、絶対パスに変換します。
  • 引数で与えた文字列の頭に、カレントディレクトリの絶対パスが追加されるようです。
$ cd ~/work/
$ echo $PWD
/mnt/c/Users/foo/work
$ wslpath -a bar
/mnt/c/Users/foo/work/bar

$PWD は現在いるパス(カレントディレクトリ)を格納している環境変数です。

(例)

引数: bar

出力: /mnt/c/Users/foo/work/bar

-u オプション

  • 引数で与えた Windows のパス を、WSL のパスに変換します。
$ wslpath -u 'C:\Users\foo\work'
/mnt/c/Users/foo/work

(例)

引数: C:\Users\foo\work

出力: /mnt/c/Users/foo/work

-w オプション

  • WSL のパスWindows のパスに変換します。
$ cd ~/work/
$ echo $PWD
/mnt/c/Users/foo/work
$ wslpath -w $PWD
C:\Users\foo\work

(例)

引数: /mnt/c/Users/foo/work

出力: C:\Users\foo\work

-m オプション

  • WSL のパスWindows のパスに変換します。但し、”\” の代わりに “/” が使われます。
$ cd ~/work/
$ echo $PWD
/mnt/c/Users/foo/work
$ wslpath -w $PWD
C:/Users/foo/work

(例)

引数: /mnt/c/Users/foo/work

出力: C:/Users/foo/work

3. WSL を Windows Terminal で利用する場合

WSL を Windows Terminal で利用する場合、ターミナル上に Windows形式のパスを貼り付けても Linux形式に自動変換してくれません (Cmder なら自動変換してくれます)。※ 2020年7月時点

面倒ですが、wslpath コマンドを利用してパスを変換することならできます。

例えば、cd コマンドでカレントディレクトリを移動したいのであれば、まず以下を記述します。

$ cd $(wslpath -u '')

この状態で、'' の中に Windows形式のパスを貼り付けます。

$ cd $(wslpath -u 'C:\Users\foo\Documents')

Enter キーを押して実行します。

$(コマンド) はコマンドの実行結果に置き換わるので、上のコマンドは以下を実行することになります。

$ cd /mnt/c/Users/foo/Documents

4. おわりに

wlspath コマンドを使う機会はあまりないかもしれません。しかしいざ必要な状況になった時には、なるべくすぐに存在を思い出して必要なオプションを調べたいものです。そんな時に本ページが役に立つと思います。

📂-Windows Tips

執筆者:labo


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Windows 10 で「ネットワークの場所(プロファイル)」を「パブリック」から「プライベート」に変更する方法

Windows 10 で「ネットワークの場所」を「パブリック」から「プライベート」に変更する方法について説明します。

Windows

【Windows 10】スタートメニューからアプリの一覧を消して、アプリを素早く起動する

目次1. はじめにスタートメニューのデフォルトの状態2. アプリの一覧を消す3. タイルをカスタマイズする4. ショートカットキーでアプリを起動する5. まとめ 1. はじめに スタートメニューのデフ …

Windows 10 のクイックアクセスにクイックにアクセスする

目次1. はじめに2. クイックアクセスを利用する手順3. フォルダをクイックアクセスにピン留めする4. おわりに 1. はじめに Windows 10 のファイルエクスプローラーに、「クイックアクセ …

Windows

【Windows 10】前回起動していたアプリを自動的に起動させない方法

目次1. 前回開いていたアプリケーションが自動的に立ち上がる機能2. 無効にする手順3. エクスプローラーの起動に関しては独自設定項目がある4. 休止状態の利用5. 参考 1. 前回開いていたアプリケ …

Windows

Alt + Tab キーでEdgeの個別タブを切り替え候補にしない設定手順(Windows 10 20H2)

目次1. はじめに2. 20H2 で Alt + Tab の何が変わったのか従来20H2 での変更3. 以前の挙動に戻す4. 問題点5. おわりに 1. はじめに Windows 10 バージョン 2 …