Talvez alguém tenha feito isso (talvez não). Teria que ser feito por um shell que saiba coletar a saída de comandos e atualizar a tela. Por si só, um terminal normal não fará isso.
Supondo que houvesse um programa fazendo isso, em cada comando
- aceitaria seu comando de entrada (possivelmente várias linhas). Para simplificar, comece limitando as entradas a uma única linha.
- depois de obter o texto, o shell executaria o comando, coletando uma linha por vez a partir do erro de saída padrão e do comando.
- à medida que adquire uma nova linha de saída, ela precisa inserir essa linha na tela, pressionando o texto existente. O ponto de inserção desce à medida que mais saída é lida. (Os terminais fornecem operações baixo nível para ajudar, mas isso é muito longe de fazê-lo funcionar ).
- se houver mais saída do que couber na tela, o usuário provavelmente espera que a saída comece a rolar para cima quando o ponto de inserção atingir a parte inferior da tela.
- quando não há mais saída (o comando pára), o shell move o cursor de volta para o topo da tela.
Todos que podem ser feitos em um programa simples. O que é difícil é se o comando quiser assumir a tela por si mesmo. Programas que fazem isso escrevem - você adivinha - para a saída padrão e o erro padrão. E eles não escrevem texto simples: eles usam seqüências de escape para se mover pela tela.
Se você limitar isso aos aplicativos bem-comportados que enviam uma sequência de inicialização de terminal, seu shell poderia (em princípio) detectar isso e desistir por enquanto, permitindo que o comando grave na tela. Mas aplicativos bem-comportados não são a maioria, e você terá muitos casos especiais interessantes para lidar.