Como imprimir uma linha horizontal do tamanho do terminal com uma palavra no meio?

Como imprimir uma linha horizontal do tamanho do terminal com uma palavra no meio?

eu preciso exibir

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

com a palavra bem no meio da linha horizontal e defina o comprimento da linha horizontal para que ela se ajuste à largura do terminal usado.

Pensei em usar uma expressão semelhante à

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

Responder1

Aqui está uma versão com, mas tenho certeza de que existe uma maneira mais compacta de fazer isso

#!/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 " " -

informação relacionada