Capturei a saída de um script que usa tput para desenhar certas coisas na tela. Quando executo cat myoutput, tudo é bem visto (parece que o terminal o reinterpreta desde o início), mas quando edito ou canalizo essa saída, vejo muitas sequências ansi e todas as coisas anteriores à impressão destrutiva, como tput clear e similares.
Como posso pós-processá-lo para obter apenas a "renderização" final?
Melhor ainda, a origem disso é que atualmente estou testando meu script para que ele imprima tudo em um arquivo, exceto no terminal
comexec > >(tee /dev/tty)
existe uma maneira de dizer ao canal stdout para "renderizar" tudo antes de salvar?
O que você quer é um programa que entenda essas sequências de controle de terminal e seja capaz de renderizar a visualização final. Bem, esse programa é chamado de emulador de terminal . Alguns deles são gráficos – como o programa que você inicia para usar seu shell, por exemplo, gnome-terminal ou alacritty, outros são basicamente sem cabeça.
Os mais antigos
screen
ou os mais modernostmux
são os relevantes aqui.tmux
, em segundo planotmux
para gerar uma captura de telaJuntando tudo, algo como
Você só precisa adicionar a escrita de algo ao fifo do seu
inner-script.sh
, por exemplo,echo done > "${FIFO}"; sleep 100
.Se você já possui uma saída "gravada", você
inner-script.sh
pode simplesmente estarcat recording.txt; echo done > "${FIFO}"; sleep 100