Recherche d'une ligne de commande wsl.exe équivalente

Nov 28 2020

La ligne de commande unique suivante dans un champ Cible de raccourci du bureau Windows envoie une requête ping à une adresse et l'horodatage.

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

Exemple de sortie:

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

J'ai lu ici que wsl.exe devrait être utilisé à la place de bash mais je ne peux pas comprendre comment créer la commande équivalente.

(Pour effectuer l'une de ces opérations dans Windows 10, vous devez activer «Sous-système Windows pour Linux» dans Windows 10 et installer Ubuntu à partir du Microsoft Store conformément à cet article HTG .)

Réponses

harrymc Nov 28 2020 at 04:07

La réponse que vous avez liée est fausse: elle bash.exen'est pas obsolète, et dans votre cas, elle est même obligatoire.

La raison en est que, bien que WSL ait un paramètre de commande , il n'autorise qu'une seule commande, il interprétera donc la ligne de commande suivante comme un appel unique qui ne fonctionnera pas:

Essayer d'utiliser les commandes shell intégrées ne fonctionnera pas non plus:

En bref, vous êtes obligé d'utiliser la bashcommande pour votre exemple. Si vous avez plus d'une distribution Linux installée dans WSL, bashappellera le shell de la distribution qui est définie par défaut.