Buscando una línea de comando wsl.exe equivalente

Nov 28 2020

La siguiente línea de comando única en un campo Destino de acceso directo del escritorio de Windows hará ping a una dirección y la marcará con la hora.

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

Salida de ejemplo:

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

Leí aquí que wsl.exe debería usarse en lugar de bash, pero no puedo averiguar cómo crear el comando equivalente.

(Para hacer algo de esto en Windows 10 es necesario que habilite el "Subsistema de Windows para Linux" en Windows 10 e instale Ubuntu desde Microsoft Store según este artículo de HTG ).

Respuestas

harrymc Nov 28 2020 at 04:07

La respuesta que vinculó es incorrecta: bash.exeno ha quedado obsoleta y, en su caso, incluso es obligatoria.

La razón es que, aunque WSL tiene un parámetro de comando , solo permite un comando, por lo que interpretará la siguiente línea de comando como una única invocación que no funcionará:

Intentar usar comandos de shell integrados tampoco funcionará:

En resumen, está obligado a usar el bashcomando para su ejemplo. Si tiene más de una distribución de Linux instalada en WSL, bashinvocará el shell de la distribución que está definida como predeterminada.