Como faço para redirecionar / salvar o console em um arquivo e mantê-lo visível na tela?

2

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.

    
por sorin 04.05.2010 / 20:13

5 respostas

4

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 .

    
por 04.05.2010 / 20:21
1

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 .

    
por 04.05.2010 / 20:20
1

Linux: command | tee logfile

Windows: instale o cygwin e execute: command | tee logfile

    
por 04.05.2010 / 20:20
0

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.

    
por 04.05.2010 / 20:23
0

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 ).

    
por 08.06.2012 / 23:34