(→Largeur du terminal et presentation des scripts)  | 
		 (→Titre + remplissage + gestion longueur impaire)  | 
		||
| (15 versions intermédiaires masquées) | |||
| Ligne 1 : | Ligne 1 : | ||
| - | =Largeur du terminal et   | + | =Largeur du terminal et présentation des scripts=  | 
==tput cols==  | ==tput cols==  | ||
| - | la commande tput renvoi la largeur actuelle du terminal en nombre de caractère, soit le nombre de colonne.  | + | la commande <b>tput cols</b> renvoi la largeur actuelle du terminal en nombre de caractère, soit le nombre de colonne.  | 
| - | ==  | + | ==caractère sur la largeur du terminal==  | 
| - | + | *caratere # sur la largeur du terminal:  | |
<pre>  | <pre>  | ||
| - | printf   | + | printf -v spaces '%*s' $(tput cols) ''; printf '%s\n' ${spaces// /#}  | 
</pre>  | </pre>  | ||
| - | + | autre solution:  | |
<pre>  | <pre>  | ||
| - | printf "\  | + | printf "#%.0s" {$(seq $(tput cols) )}  | 
| + | </pre>  | ||
| + | |||
| + | ==titre + remplissage sur la ligne==  | ||
| + | avec toto variable contenant le titre.  | ||
| + | <pre>  | ||
| + | printf -v spaces '%*s' $((($(tput cols)-${#toto}-2)/2)) ''  | ||
| + | printf '%s' ${spaces// /#};printf " $toto "  | ||
| + | printf '%s\n' ${spaces// /#}  | ||
| + | </pre>  | ||
| + | |||
| + | ==Titre + remplissage + gestion longueur impaire==  | ||
| + | |||
| + | <pre>  | ||
| + | printtitre () {  | ||
| + | # parametre 1: caractere de remplissage  | ||
| + | # parametre 2: titre a centrer et encadrer par le caractere de remplissage  | ||
| + |     local c=$1  | ||
| + |     local titre=" $2 "  | ||
| + | #test si ligne impaire  | ||
| + |     if (( ( ${#titre} + $(tput cols) ) % 2 > 0 )) ; then printf "$c"; fi  | ||
| + |     printf  "%*s" $(( ($(tput cols) - ${#titre} ) / 2 )) '' | sed "s/ /$c/g"  | ||
| + |     printf "$titre"  | ||
| + |     printf  "%*s" $(( ($(tput cols) - ${#titre} ) / 2 )) '' | sed "s/ /$c/g"  | ||
| + |     printf "\n"  | ||
| + | }  | ||
</pre>  | </pre>  | ||
Sommaire | 
la commande tput cols renvoi la largeur actuelle du terminal en nombre de caractère, soit le nombre de colonne.
printf -v spaces '%*s' $(tput cols) ''; printf '%s\n' ${spaces// /#}
autre solution:
printf "#%.0s" {$(seq $(tput cols) )}
avec toto variable contenant le titre.
printf -v spaces '%*s' $((($(tput cols)-${#toto}-2)/2)) ''
printf '%s' ${spaces// /#};printf " $toto "
printf '%s\n' ${spaces// /#}
printtitre () {
# parametre 1: caractere de remplissage
# parametre 2: titre a centrer et encadrer par le caractere de remplissage
    local c=$1
    local titre=" $2 "
#test si ligne impaire
    if (( ( ${#titre} + $(tput cols) ) % 2 > 0 )) ; then printf "$c"; fi
    printf  "%*s" $(( ($(tput cols) - ${#titre} ) / 2 )) '' | sed "s/ /$c/g"
    printf "$titre"
    printf  "%*s" $(( ($(tput cols) - ${#titre} ) / 2 )) '' | sed "s/ /$c/g"
    printf "\n"
}