.png)
Quero escrever um script que produza frases que eu escolher. Quero que eles apareçam no centro da tela: imprima o primeiro e depois faça o segundo aparecer sobre o primeiro. Aqui está meu código:
COLUMNS=$(tput cols)
printf "%*s\n" $((($COLUMNS)/2)) "Hey, welcome to my script!" "%\r"
sleep 2
printf "%*s" $((($COLUMNS)/2)) "This is a new line!"
Minha intenção é substituir a primeira linha pela segunda, da mesma forma que telnet towel.blinkenlights.nl
faz no início de sua versão particular de Star Wars. Consegui fazê-los aparecer no centro lendo outra pergunta, mas acho impossível fazer a segunda linha começar exatamente na mesma linha da primeira. Alguma pista?
Responder1
O problema é que você tem um \n
no seu primeiro arquivo printf
. Isso faz com que o cursor se mova para a próxima linha, de modo que quando você imprimir o novo texto ele não fique na mesma linha para substituir o texto antigo. Se você remover isso, você deve ficar bem:
COLUMNS=$(tput cols)
printf "%*s\r" $((COLUMNS/2)) "Hey, welcome to my script!"
sleep 2
printf "%*s" $((COLUMNS/2)) "This is a new line!"
printf "\n"
Corrigi sua observação correta sobre \r
estar errado e simplifiquei um pouco a matemática. Então adicionei um last \n
para colocar o prompt em sua própria linha no final