Gostaria de executar um comando shell do WSL em minha máquina host do Windows. Especificamente, gostaria de executar o comando qemu-system-i386 -s -S -fda out/floppy.img
, pois estou construindo um software e gostaria de executar este comando usando um Makefile para exibir a saída.
Simplesmente, gostaria de invocar comandos shell em minha máquina host de dentro da máquina virtual; ao contrário de como você pode invocar comandos do host para a VM usando algo como wsl <command>
. Espero que minha explicação do que estou tentando fazer tenha sido clara o suficiente. Não consegui encontrar nada na internet, por isso estou perguntando aqui.
Isso é possível?
Acesse https://learn.microsoft.com/en-us/windows/wsl/filesystems para ver a solução. Copiei a seção relevante para esta questão específica abaixo.
Execute ferramentas do Windows a partir do Linux
O WSL pode executar ferramentas do Windows diretamente da linha de comando do WSL usando [tool-name].exe. Por exemplo, notepad.exe.
Os aplicativos executados dessa maneira têm as seguintes propriedades:
Para executar a ferramenta do Windows ipconfig.exe, use a ferramenta Linux grep para filtrar os resultados "IPv4" e use a ferramenta Linux cut para remover os campos da coluna, de uma distribuição Linux (por exemplo, Ubuntu) digite:
Vamos tentar um exemplo misturando comandos Windows e Linux. Abra sua distribuição Linux (ou seja, Ubuntu) e crie um arquivo de texto: touch foo.txt. Agora use o comando ls -la do Linux para listar os arquivos diretos e seus detalhes de criação, além da ferramenta findstr.exe do Windows PowerShell para filtrar os resultados para que apenas seu arquivo foo.txt apareça nos resultados:
As ferramentas do Windows devem incluir a extensão do arquivo, corresponder ao caso do arquivo e ser executáveis. Não executáveis, incluindo scripts em lote. Os comandos nativos do CMD, como dir, podem ser executados com o comando cmd.exe /C.
Por exemplo, liste o conteúdo do diretório C:\ do sistema de arquivos do Windows, digitando:
Ou use o comando ping para enviar uma solicitação de eco ao site microsoft.com:
Os parâmetros são passados para o binário do Windows sem modificações. Como exemplo, o seguinte comando abrirá C:\temp\foo.txt em notepad.exe:
Isso também funcionará: