LoginSignup
8
5

More than 3 years have passed since last update.

WindowsバッチからWSL (Windows Subsystem for Linux)のコマンドを使用するメモ

Posted at

概要

WindowsバッチからWSL (Windows Subsystem for Linux)のコマンドを呼び出す方法について解説します。

WSLコマンドの呼び出し

WSLコマンドをWindowsバッチから呼び出すには、wslコマンドの引数に実行したいLinuxのコマンドを指定します。

C:\>wsl pwd
/mnt/c

パス表現

WindowsのパスはWSLにおいて以下のように表現されます。ここでは"C:\Users"を指定しています。

/mnt/c/Users

パス変換

WindowsのパスとWSLのパスを相互変換するには、wslpathコマンドを使用します。wslpathコマンドはwslコマンドに続けて打ち込みます。

-uオプションでWindowsパスをWSLのパスに変換します。

C:\>wsl wslpath -u C:\
/mnt/c/

-wオプションでWSL形式のパスをWindowsのパスに変換します。

C:\>wsl wslpath -w /mnt/c/Users
C:\Users

パイプ

wslコマンドの引数としてパイプ(|)を渡すことはできません。通常のWindowsコマンドと同様にwslコマンドを実行し、その結果を再度wslコマンドにパイプで渡すことでLinuxコマンドを連続して実行できます。
例)

C:\>wsl ls /mnt/c | wsl grep Users
Users

復帰値

WSL側のコマンド復帰値はWindows側のERRORLEVEL環境変数に格納されます。

C:\>wsl exit -1

C:\>echo %ERRORLEVEL%
255

サンプル

サンプルとしてWindowsのnetstatコマンドの結果から、TCPポートのbind状況のみを取得するワンライナーコマンドを実装します。

C:\>netstat -ano | wsl grep TCP | wsl awk '{print $2}'
0.0.0.0:135
0.0.0.0:445
0.0.0.0:5040
0.0.0.0:5357
0.0.0.0:49664
0.0.0.0:49665
0.0.0.0:49666
0.0.0.0:49667
0.0.0.0:49668
0.0.0.0:49669
0.0.0.0:49670
0.0.0.0:49671
0.0.0.0:49672
0.0.0.0:49678
0.0.0.0:49704
8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5