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

ドラッグ・アンド・ドロップでファイルやフォルダを移動する危険性

1. はじめに Windows でファイルやフォルダを移動するには、ドラッグ・アンド・ドロップで行うことができます (それ以外のOSでもできますが) 。 この方法は直感的であるし手っ取り早いので、広く …

Windows

【Windows】アプリケーションが開いている(ロックしている)ファイルを調べる方法

【Windows】プロセスが開いている(ロックしている)ファイルを調べる方法について説明します。

エクスプローラーでフォルダを開いた時に、1つ目の項目を選択するキー操作

問題点 Windows のエクスプローラー上でフォルダを開いた時、上から1つ目の項目(ファイルもしくはフォルダ)をキーボードの操作によって選択したい場合、どうすればよいでしょうか? エクスプローラーを …

Creators Update 導入後に、「ファイル名を指定して実行」で履歴が表示されなくなった場合の対処法

Windows 10 Creators Update 導入後、「ファイル名を指定して実行」で履歴が表示されなくなった場合の対処法を紹介します。 目次1. 状況2. 対処法3. まとめ 1. 状況 [フ …

Windows

【Windows 10】Twitter アプリをアンインストールする

Windows 10 上の Twitter アプリをアンインストールする手順を紹介します。 目次1. はじめに(Twitter URL とアプリの紐づけ設定における問題)2. Twitterアプリをア …