同等のwsl.exeコマンドラインを探しています

Nov 28 2020

Windowsデスクトップショートカットの[ターゲット]フィールドにある次の単一のコマンドラインは、アドレスにpingを実行してタイムスタンプを付けます。

C:\Windows\System32\bash.exe -c "ping 1.0.0.1 | while read line; do echo `date` - $line; done"

出力例:

Fri Nov 27 14:08:05 CST 2020 - PING 1.0.0.1 (1.0.0.1) 56(84) bytes of data.
Fri Nov 27 14:08:05 CST 2020 - 64 bytes from 1.0.0.1: icmp_seq=1 ttl=58 time=26.7 ms
Fri Nov 27 14:08:06 CST 2020 - 64 bytes from 1.0.0.1: icmp_seq=2 ttl=58 time=35.5 ms
Fri Nov 27 14:08:07 CST 2020 - 64 bytes from 1.0.0.1: icmp_seq=3 ttl=58 time=42.0 ms

ここで、bashの代わりにwsl.exeを使用する必要があることを読みましたが、同等のコマンドを作成する方法がわかりません。

(Windows 10でこれを行うには、Windows 10で「WindowsSubsystemfor Linux」を有効にし、このHTGの記事に従ってMicrosoftストアからUbuntuをインストールする必要があります。)

回答

harrymc Nov 28 2020 at 04:07

あなたがリンクした答えは間違っbash.exeています:非推奨ではなく、あなたの場合、それは必須ですらあります。

その理由は、WSLにはコマンドパラメーターがありますが、許可されるコマンドは1つだけであるため、次のコマンドラインは機能しない単一の呼び出しとして解釈されるためです。

組み込みのシェルコマンドを使用しようとしても機能しません。

つまり、bash例としてコマンドを使用する必要があります。WSLに複数のLinuxディストリビューションがインストールbashされている場合は、デフォルトとして定義されているディストリビューションのシェルを呼び出します。