Como posso capturar stdout / stderr em um arquivo, mas ainda o vejo no meu console?

1

Estou usando o script bash no AMazon Linux. Quando eu quero redirecionar stderr e stdout para um arquivo, posso executar

./my_process.pl &>/tmp/out.txt

Existe uma maneira de redirecionar essa saída para um arquivo e continuar a vê-lo no console (no meu shell)? Como isso é feito?

    
por Dave 01.05.2017 / 16:33

2 respostas

3

Sim, usando tee :

/my_process.pl 2>&1 | tee /tmp/out.txt

Observe que usar &>file para redirecionar a saída padrão e o erro padrão para um arquivo é uma extensão do padrão POSIX que é aceito por alguns shells. É mais seguro usar >file 2>&1 . Nesse caso, &> não pode ser usado, pois não estamos redirecionando para um arquivo.

Em bash , pode-se também fazer

/my_process.pl |& tee /tmp/out.txt

que é equivalente ao acima. Em ksh93 , |& significa algo completamente diferente.

    
por 01.05.2017 / 17:40
1

Use os comandos script para armazenar os stdin e stdout em um arquivo chamado typescript .

    
por 01.05.2017 / 17:31