Wie druckt man eine horizontale Linie in der Größe des Terminals mit einem Wort in der Mitte?

Wie druckt man eine horizontale Linie in der Größe des Terminals mit einem Wort in der Mitte?

Ich muss anzeigen

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

mit dem Wort genau in die Mitte der horizontalen Linie und stellen Sie die Länge der horizontalen Linie so ein, dass sie zur verwendeten Terminalbreite passt.

Ich habe darüber nachgedacht, einen ähnlichen Ausdruck zu verwenden als

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

Antwort1

Hier ist eine Version mit, aber ich bin sicher, dass es eine kompaktere Möglichkeit gibt, dies zu tun

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

verwandte Informationen