.png)
Quiero escribir un guión que genere las oraciones que elijo. Quiero que aparezcan en el centro de la pantalla: muestre el primero y luego haga que el segundo aparezca sobre el primero. Aquí está mi 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!"
Mi intención es sobrescribir la primera línea con la segunda, del mismo modo que telnet towel.blinkenlights.nl
lo hago al principio de su particular versión de Star Wars. Logré que aparecieran en el centro leyendo otra pregunta, pero me resulta imposible hacer que la segunda línea comience exactamente en la misma línea de la primera. ¿Alguna pista?
Respuesta1
El problema es que tienes un \n
en tu primero printf
. Eso hace que el cursor se mueva a la siguiente línea, por lo que cuando imprima el nuevo texto no estará en la misma línea para sobrescribir el texto anterior. Si eliminas eso deberías ser bueno:
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"
Arreglé tu observación correcta acerca de que \r
estaba mal y simplifiqué un poco las matemáticas. Luego agregué un último \n
para que el mensaje aparezca en su propia línea al final.