exibição dinâmica de um processo em execução?

2

Estou escrevendo um script e, de acordo com isso, quando eu executar, certas informações serão exibidas na tela de saída.

por exemplo, os dados constantes exibidos são:

my name is mukesh.
i am 27 years old
unix version 7.2.3.0

mas, juntamente com a exibição acima, outra coisa também precisa ser exibida ( dados variáveis ), por exemplo

Process A is starting
Process A is running
Process A is completed.

mas não quero a exibição acima.

Eu quero que Process A is starting seja apagado da tela e substituído por Process A is running e, em seguida, por Process A is completed.

Não estou muito interessado em usar clear , pois ele removerá a tela inteira contendo os dados constantes também. e também porque os dados constantes levam muito tempo para serem processados e exibidos na tela.

    
por munish 09.03.2012 / 20:56

3 respostas

3

Você pode limpar uma linha e usar o retorno de carro ( \r ) para chegar ao início da linha.

clr2eol='tput el'                              # capture escape sequence for "clear-to-end-of-line"
echo -n "Process A has started."               # display without a newline
sleep 3
echo -n "\r${clr2eol}Process A is running."    # move to beginning of line (bol), clear, and display new text
sleep 5
echo -n "\r${clr2eol}Process A has completed." # again, move to bol, clear and display new test
echo                                           # terminating newline  you may not want to have this sent right away

Leia a página de manual em terminfo .

    
por 09.03.2012 / 22:50
3

O caractere de retorno de carro ( \r ) retornará ao início da linha atual, para que você possa sobrescrever o texto:

printf "%s\r" "Process A is starting  "
sleep 5
printf "%s\r" "Process A is running   "
sleep 5
printf "%s\n" "Process A is completed."
    
por 09.03.2012 / 21:38
0

Para fazer algo assim, você terá que usar alguns como (n) maldições: link

    
por 09.03.2012 / 21:06