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

存在しているはずのホームグループが見つからない場合の対処法 (Windows 10)

Windows 7 以降では「ホームグループ」という機能を使い、複数のパソコンでファイルを共有することができます。 1つのネットワーク内で誰かがホームグループを「作成」しておけば、共有する1つのパスワ …

Windows

【Windows 10】ディスクの空き領域を増やす方法

Windows 10 をそれなりに長期間使っていると、必要ないファイルが増えていき、ストレージが無駄に占有されてしまいます。 本ページでは、Windows 10 において空き領域を確保する方法について …

Windows

Windows でアプリケーションを閉じるキーボードショートカットキー

Windows でアプリケーションを終了させるには Alt + F4 というショートカットキーがあるのですが、Alt + Space を押してから C を押すという方法もあり、後者だけ覚えておけばよい …

Windows

【Windows】自作のファイルを「ファイル名を指定して実行」で実行する方法

目次1. はじめに2. 準備作業(1) 実行するファイルを置くフォルダーを決めます(2) このフォルダーにパスを通します。(3) 実行するファイルを用意します。(4) アプリの起動を監視させる設定を見 …

Windows

【Windows 10 】タスクバー上の日付に「曜日」を表示する

Windows 10 のタスクバー上には、日付と時刻が表示されます。 デフォルトだと「曜日」がありません ここに「曜日」を表示する手順について説明します。 「曜日」が追加された時の表示です 目次1. …