No Linux, você pode usar o utilitário tee
.
No Windows, o PowerShell contém um tee
cmdlet . Para cmd
, você precisará baixar e instalar um separado utilitário .
Eu quero salvar a saída de um programa (stdout) em um arquivo, mas ainda ser capaz de ver a saída na tela em tempo real.
Eu preciso de soluções para Linux e Windows.
No Linux, você pode usar o utilitário tee
.
No Windows, o PowerShell contém um tee
cmdlet . Para cmd
, você precisará baixar e instalar um separado utilitário .
No Linux e sistemas semelhantes:
program | tee filename
O programa tee
envia qualquer coisa que entra em sua entrada padrão para sua saída padrão (como cat
) e também o grava no arquivo especificado.
Outra maneira de obter o mesmo efeito seria
program >filename 2>/dev/null &
tail -f filename
Isto executa o programa em segundo plano, redirecionando sua saída padrão para o arquivo, então tail -f
permite que você siga os dados sendo gravados no arquivo em tempo real (ou quase, talvez uma fração de segundo). O 2>/dev/null
faz com que o fluxo de erro padrão desapareça para que ele não interfira na saída de tail -f
.
Linux: command | tee logfile
Windows: instale o cygwin e execute: command | tee logfile
Para o Windows, você pode fazer isso:
dir > directory.txt & type directory.txt
onde você substituiria dir
pelo seu aplicativo.
Se a saída rolar muito rápido, use:
dir > c:\directory.txt & type c:\directory.txt | more
No entanto, não acho que isso exibiria o conteúdo do arquivo em tempo real. Você teria que esperar até o processo terminar.
No Windows, você pode usar tee
se você baixar a versão do GnuWin32 . É o mesmo que o aplicativo linux e vem do pacote coreutils .
Uma palavra de cautela, no entanto: tee
tem seu próprio código de retorno, assim você não poderá perceber erros do processo enviado para ele ( a menos que você esteja no linux, então existem maneiras de contornar isso ).