Ich suche die entsprechende Befehlszeile für wsl.exe

Nov 28 2020

Die folgende einzelne Befehlszeile in einem Windows Desktop-Verknüpfungszielziel pingt eine Adresse und einen Zeitstempel.

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

Beispielausgabe:

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

Ich habe hier gelesen , dass wsl.exe anstelle von bash verwendet werden sollte, aber ich kann nicht herausfinden, wie der entsprechende Befehl erstellt wird.

(Um dies in Windows 10 zu tun, müssen Sie "Windows-Subsystem für Linux" in Windows 10 aktivieren und Ubuntu gemäß diesem HTG-Artikel aus dem Microsoft Store installieren .)

Antworten

harrymc Nov 28 2020 at 04:07

Die Antwort, die Sie verlinkt haben, ist falsch: Sie bash.exewurde nicht veraltet und ist in Ihrem Fall sogar obligatorisch.

Der Grund dafür ist, dass WSL zwar über einen Befehlsparameter verfügt , jedoch nur einen einzigen Befehl zulässt. Daher wird die folgende Befehlszeile als einzelner Aufruf interpretiert, der nicht funktioniert:

Der Versuch, integrierte Shell-Befehle zu verwenden, funktioniert ebenfalls nicht:

Kurz gesagt, Sie müssen den bashBefehl für Ihr Beispiel verwenden. Wenn Sie mehr als eine Linux-Distribution in WSL installiert haben, bashwird die Shell der Distribution aufgerufen, die als Standard definiert ist.