O erro aqui é bem fácil de entender: mintty
não encaminha a saída de seus programas para (presumivelmente) cmd
, onde o redirecionamento de saída está configurado. Em vez disso, exibe a saída em sua própria janela da GUI. Isso é o que um emulador de terminal é projetado para fazer, afinal. :)
O redirecionamento de saída é um recurso de shell. Se você acabou de executar mintty my_command
, você não está usando um shell. Em vez disso, mintty
lança diretamente my_command
.
Se você citar "my_command 2>out.err"
, informará mintty
para procurar um comando desse nome (inteiro). É equivalente a digitar "my_command 2>out.err"
em um shell regular do Linux. Não vai funcionar de qualquer maneira.
Então, agora que estabelecemos que é um recurso de shell, é claro que precisamos de um shell. Uma escolha comum seria Bash. Bash pode ser passado uma string de comando para executar quando inicia, assim:
bash -c "my_command 2>out.err"
Isso significa que podemos usá-lo assim com mintty
:
mintty /bin/bash -c "my_command 2>out.err"
Na minha máquina, o shell Cygwin Bash lançado desta maneira herda o diretório de trabalho que eu tenho em cmd
.