Isso é impossível em geral. Uma vez que uma aplicação tenha emitido alguma saída, o único local onde esta saída é armazenada é na memória do terminal. Para dar um exemplo extremo, se esta é a década de 1970, o terminal é uma impressora impressa, a saída não está voltando para o computador sem que alguém o digite.
Se a saída ainda estiver no buffer de rolagem do seu emulador de terminal, você poderá recuperá-lo, mas como fazer isso depende do terminal, não há um modo padrão. As guias podem ou não ter sido convertidas em espaços nesse ponto. Se as informações de formatação (cores, negrito, etc.) podem ser recuperadas e em que formato depende do terminal. Com a maioria dos terminais, não há uma maneira fácil ou infalível de descobrir onde a saída do comando foi iniciada e finalizada.
Se você planeja com antecedência, pode gravar a saída do comando de forma transparente com script
. A execução de script mycommand.log mycommand
pode ser diferente de mycommand 2>&1 | tee mycommand.log
porque, com script
, o comando ainda está gravando em um terminal.
Um compromisso é sempre executar comandos de longa duração dentro de screen
ou tmux
. Ambos têm uma maneira de despejar o buffer de rolagem em um arquivo, e eles têm o bônus adicional de que você pode desconectar da sessão sem interromper a execução do programa e reconectar depois.