Em um PowerShell (7), pode-se executar um comando Linux usando: wsl grep 'test'
.
Como posso executar um comando mais complicado que envolve tubulação (no Linux/WSL) e espaços?
Por exemplo:
wsl find . -name '*.txt' | xargs grep 'main('
Isso resulta em um erro:
xargs: The term 'xargs' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
embora xargs
esteja obviamente disponível dentro do WSL.
Variações disso, como colocar outro wsl
na frente do xargs
resultado neste erro:
wsl find . -name '*.txt' | wsl xargs grep 'main('
/bin/bash: -c: line 1: syntax error near unexpected token `('
/bin/bash: -c: line 1: `xargs grep main('
ResourceUnavailable: Program 'wsl.exe' failed to run: The pipe is being closed.At line:1 char:1
+ wsl find . -name '*.txt' | wsl xargs grep 'main('
+ ~~~~~~~~~~~~~~~~~~~~~~~~.
Observe que quero fazer isso diretamente de um PowerShell, não primeiro iniciar um terminal WSL e, em seguida, executar o comando Linux dentro dele (o que obviamente funciona).