¿Cómo imprimir una línea horizontal del tamaño del terminal con una palabra en el medio?

¿Cómo imprimir una línea horizontal del tamaño del terminal con una palabra en el medio?

necesito mostrar

--------------------------- word ----------------------------

con la palabra justo en el medio de la línea horizontal y establezca la longitud de la línea horizontal para que se ajuste al ancho del terminal utilizado.

Pensé en usar una expresión similar a la

printf '%*s\n' "$(tput cols)" '' | tr ' ' -

Respuesta1

Aquí hay una versión, pero estoy seguro de que hay una forma más compacta de hacerlo.

#!/bin/bash

WORD=$@
NUMBER_OF_SPACES_SURROUNDING_THE_WORD=1  

TERMINAL_WIDTH=$(tput cols)
WORD_SIZE=$(echo $WORD | wc -c )
NUMBER_OF_SPACES_SURROUNDING_THE_WORD=1
NUMBER_OF_SYMBOLS=$((TERMINAL_WIDTH -   $WORD_SIZE - 2*$NUMBER_OF_SPACES_SURROUNDING_THE_WORD))
LENGTH_OF_RIGHT_PART=$((NUMBER_OF_SYMBOLS/2 + $NUMBER_OF_SYMBOLS%2 ))
LENGTH_OF_LEFT_PART=$(( $TERMINAL_WIDTH - 2*$NUMBER_OF_SPACES_SURROUNDING_THE_WORD - $WORD_SIZE - $LENGTH_OF_RIGHT_PART      ))


printf '%*s' "$LENGTH_OF_RIGHT_PART" '' | tr " " -
printf '%*s' $NUMBER_OF_SPACES_SURROUNDING_THE_WORD
printf $WORD
printf '%*s' $NUMBER_OF_SPACES_SURROUNDING_THE_WORD
printf '%*s\n' "$LENGTH_OF_RIGHT_PART" '' | tr " " -

información relacionada