Como eu obteria o meu terminal para regurgitar o texto de saída anterior de comandos anteriores? Isso é possível?

3

Acabei de executar um trabalho que leva várias horas e esqueci de enviar esse texto para um arquivo de texto.

pseudocódigo:

echo [previous text output] > OutputHistory.txt

Além disso, não posso simplesmente "copiar e colar" o que estava no meu terminal porque 1) a exibição omite caracteres de formatação importantes como "\ t" e 2, eu posso ter fechado a janela do terminal.

Isso é possível com qualquer comando Unix?

    
por Tom 08.06.2016 / 23:41

2 respostas

5

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.

    
por 09.06.2016 / 01:52
2

Apenas se o aplicativo do terminal estiver armazenando a saída bruta em um arquivo em algum lugar, como, por exemplo, iTerm faz com o log ativado, ou algum outro aplicativo de logging ( autoexpect(1) ou equivalente) estava salvando a saída de saída bruta disponível. Normalmente, isso precisa ser configurado antecipadamente e requer gerenciamento, por exemplo, Se alguém deixar o yes em execução por algum tempo, então, o que acontece com o espaço em disco?

    
por 09.06.2016 / 00:15