Buscando una línea de comando wsl.exe equivalente

Buscando una línea de comando wsl.exe equivalente

La siguiente línea de comando única en un campo de destino de acceso directo del escritorio de Windows hará ping a una dirección y le marcará 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

Yo leoaquíese wsl.exe debería usarse en lugar de bash pero no puedo entender cómo crear el comando equivalente.

(Para hacer todo esto en Windows 10 es necesario habilitar el "Subsistema de Windows para Linux" en Windows 10 e instalar Ubuntu desde Microsoft Store segúneste artículo de HTG.)

Respuesta1

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

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

ingrese la descripción de la imagen aquí

Intentar utilizar comandos de shell integrados tampoco funcionará:

ingrese la descripción de la imagen aquí

En resumen, estás obligado a utilizar el bashcomando para tu ejemplo. Si tiene más de una distribución de Linux instalada en WSL, bashinvocará el shell de la distribución que está definido como predeterminado.

Respuesta2

Yo leoaquíese wsl.exe debería usarse en lugar de bash pero no puedo entender cómo crear el comando equivalente.

Simplemente reemplaza bash.exe -ccon 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"

Esto funciona bien encmd.exe. ¡Recomiendo probarlo! 2

Ejemplo de salida:

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

Esto lo aprendí yo mismo hace apenas unos días leyendoesta publicación.

Tienes razón en esobash.exeha sido obsoleto (al igual que wslconfig.exey lxrun.exe).

Referencias


1 En wsl.exe --exec bash -c, el bashes ellinux comando yno las ventanas bash.exedominio.
Esto queda (indirectamente) claro si intentas reemplazar bashcon bash.exe – y experimentas que no hay salida.

2 Para abrir la línea de comando (como administrador): presione WinKey+ r, escriba cmd, mantenga presionado Ctrl+ Shifty presione Enter.
(Luego copie y pegue el comando con Ctrl+ c, Ctrl+ v.)

información relacionada