j’ai eu envie de centrer un texte hier sur mon terminal, afin de rendre plus lisible la sortie d’un script, voici comment j’ai fait, ça peut servir:
# message a afficher
MSG= »${*} »
# on verifie etre sur un terminal
tty >/dev/null
[ « $? » != « 0 » ] && echo « ${MSG} » && return 0
COLS= »$(tput cols) »
[ « $? » != « 0 » -o -n « $(echo ${COLS} |sed ‘s/[0-9]//g’) » ] && echo « ${MSG} » && return 0
# on entoure le message d’espaces
BORDER= » »
# on peut centrer le texte maintenant
echo « ${MSG} » |awk \
-v COLS= »${COLS} » \
-v BORDER= »${BORDER} » \
‘{
MSG_LENGTH = length($0) ;
COLS = (COLS – MSG_LENGTH);
BORDER_LENGTH = length(BORDER) ;
for ( i = 1 ; i <= COLS ; i = (i + BORDER_LENGTH) ) {
i = (i + BORDER_LENGTH) ;
BORDER_MSG = BORDER_MSG BORDER;
}
printf ("%s%s%s\n",BORDER_MSG, $0, BORDER_MSG) ;
}'
[/bash]