Em resumo… estou querendo rodar dois scripts bash numa mesma tela de terminal (utilizando o multitail) que basicamente seria o programa principal e uma barra de loading. No script que faz a barra de loading eu utilizei o tput .
O multitail vai ficar monitorando os dois scripts ao mesmo tempo certo? o script principal, funcionou perfeitamente, porém, o que tem a barra de loading (que usa o tput dentro dele) fica bugado.
OBS: Isso acontece somente com o multitail, rodando fora do multitail, não buga.
A mensagem de erro que ele retorna:
tput: unknown terminal "dum"
Esse era o esperado (aqui rodei os comandos separadamentas em 2 terminais separados (split no terminator)):
Isso acontece porque deve estar usando o caractere \r“carriage return”, para criar esta animação, onde o multitail, não consegue capturar como uma nova linha, já que não foi feito pra tal, o mesmo foi desenhado para visualizarmos múltiplos arquivos de logs, assim como o utilitário tail, portanto se quiser prosseguir terá que enviar a saída desta animação para um arquivo e então ler com o multitail.
Agora saiba que se está, a usar este utilitário, para criar uma animação e/ou barra de progresso, enquanto uma tarefa está sendo executada, definitivamente não é a melhor opção, uma das opções seria algo como loop while ou um utilitário como o pv.
Certamente o erro era esse mesmo, mas, mas ainda porque eu estava usando a opção -n do echo que printava na tela a barra de carregamento, que no caso, ela explicitamente suprime a new line.
Bom, eu estava anteriormente já tentando se utilizar dessa estratégia que comentou… jogando a saida do comando para um arquivo e eventualmente fazendo com que o multitail ficasse monitorando o mesmo… e praticamente foi isso que eu fiz mesmo… porém, o programa principal, que ia rodar junto com a barra de carregamento eu não precisei fazer isso, pois o multitail tem uma opção nativa dele mesmo que você pode justamente ficar escutando a saida de algum comando que você passar… então o que por fim eu fiz foi passar duas coisas para o multitail…
Passar o programa principal direto para o multitail para ele ficar escutando a saida do mesmo
Passar o arquivo que ficaria sendo alimentado com a barra de progresso pelo próprio script da barra de progresso
Iniciar por fora a barra de progresso (quando eu passo o comando principal para o multitail ele automáticamente já passa a ser excutado)