¿Cómo puedo imprimir $myvar
acolchado para que esté en el centro de la terminal, y a ambos lados están =
hasta el borde de la pantalla?
Respuesta aceptada:
Encontré dos piezas de información aquí en la red stackexchange que me ayudaron a llegar a esta respuesta funcional:
- https://stackoverflow.com/q/263890/5419599
- https://stackoverflow.com/q/4409399/5419599
Sin embargo, el código de esta respuesta es mío.
Vea el historial de edición si desea más verbosidad; He editado todo el cruft y los "pasos a lo largo del camino".
Creo que la mejor manera es:
center() {
termwidth="$(tput cols)"
padding="$(printf '%0.1s' ={1..500})"
printf '%*.*s %s %*.*sn' 0 "$(((termwidth-2-${#1})/2))" "$padding" "$1" 0 "$(((termwidth-1-${#1})/2))" "$padding"
}
center "Something I want to print"
Salida en un terminal de 80 columnas de ancho:
========================== Something I want to print ===========================
Tenga en cuenta que el relleno no tiene que ser un solo carácter; de hecho, el padding
la variable no lo es, tiene 500 caracteres en el código anterior. Podría usar alguna otra forma de relleno cambiando solo el padding
línea:
padding="$(printf '%0.2s' ^v{1..500})"
Resultados en:
^v^v^v^v^v^v^v^v^v^v^v^v^v Something I want to print ^v^v^v^v^v^v^v^v^v^v^v^v^v^
Otro uso práctico es:
clear && center "This is my header"