meu pequeno segredo para quando eu preciso capturar stdout e stderr é usar nohup . Esta é uma boa solução quando você está interessado apenas na saída, e não na interação na tela também.
A maneira classic de capturar stdout (somente) e exibi-lo na tela é usar o comando tee
nohup script.sh | tee merged.out
E se apenas a stdout for desejada
script.sh | tee script.out
Aqui está um exemplo rápido usando o comando ls
em vez de script.sh
xx069:~ # nohup ls | tee merged.out
nohup: ignoring input and redirecting stderr to stdout
bin
inst-sys
merged.out
xx069:~ # cat merged.out
bin
inst-sys
merged.out
E, é claro, o redirecionamento como 2 > & 1 para combinar stdout e stderr também é possível.
Principalmente, uso script
para capturar a entrada e a saída na tela. Quando apenas a saída é necessária, uso uma das opções >
, >>
, 2>&1 >
, tee
e tee -a
, dependendo da necessidade. E nohup
quando sou preguiçoso.