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

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

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で「Windows Subsystem for Linux」を有効にし、Microsoft StoreからUbuntuをインストールする必要があります。このHTGの記事

答え1

リンクした回答は間違っています。bash.exe非推奨ではなく、あなたの場合は必須です。

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

ここに画像の説明を入力してください

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

ここに画像の説明を入力してください

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

答え2

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

bash.exe -c次のように置き換えてくださいwsl.exe --exec bash -c: 1

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

これは、cmd.exeぜひお試しください! 2

出力例:

date - PING 1.0.0.1 (1.0.0.1) 56(84) bytes of data.
date - 64 bytes from 1.0.0.1: icmp_seq=1 ttl=56 time=4.58 ms
date - 64 bytes from 1.0.0.1: icmp_seq=2 ttl=56 time=4.31 ms
^C

私は数日前に読んだ本でこれを知りましたこの郵便受け

おっしゃる通りですbash.exe廃止されました (havewslconfig.exeおよびlxrun.exe

参考文献


1 ではwsl.exe --exec bash -cbashリナックス コマンドとWindowsではない bash.exeコマンド。 –に置き換えてみて 、出力がないことを経験すれば、
これは(間接的に)明らかです。bashbash.exe

2 コマンドラインを開くには(管理者として)WinKey+を押しr、 と入力し、 +cmdを押した まま を押します。 (次に、 + 、 + を使用してコマンドをコピーして貼り付けます。)CtrlShiftEnter
CtrlcCtrlv

関連情報