Largeur terminal et presentation

De system.co.free.fr.
(Différences entre les versions)
(caractère sur la largeur du terminal)
Ligne 23 : Ligne 23 :
printf '%s\n' ${spaces// /#}
printf '%s\n' ${spaces// /#}
</pre>
</pre>
 +
 +
==Titre + remplissage + gestion longueur impaire==
 +
 +
<pre>
 +
printtitre () {
 +
    c=$1
 +
    if (( ${#2} % 2 > 0 )) ; then printf "$c"; fi
 +
    if (( $(tput cols) % 2 > 0 )) ; then printf "$c" ; fi
 +
    printf  "%*s" $(( ($(tput cols) - ${#2} - 2) / 2 )) '' | sed "s/ /$c/g"
 +
    printf "%s" " $2 "
 +
    printf  "%*s" $(( ($(tput cols) - ${#2} - 2) / 2 )) '' | sed "s/ /$c/g"
 +
    printf "\n"
 +
}

Version du 5 novembre 2014 à 09:24

Sommaire

Largeur du terminal et présentation des scripts

tput cols

la commande tput cols 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:
printf -v spaces '%*s' $(tput cols) ''; printf '%s\n' ${spaces// /#}

autre solution:

printf "#%.0s" {$(seq $(tput cols) )}

titre + remplissage sur la ligne

avec toto variable contenant le titre.

printf -v spaces '%*s' $((($(tput cols)-${#toto}-2)/2)) ''
printf '%s' ${spaces// /#};printf " $toto "
printf '%s\n' ${spaces// /#}

Titre + remplissage + gestion longueur impaire

printtitre () {
    c=$1
    if (( ${#2} % 2 > 0 )) ; then printf "$c"; fi
    if (( $(tput cols) % 2 > 0 )) ; then printf "$c" ; fi
    printf  "%*s" $(( ($(tput cols) - ${#2} - 2) / 2 )) '' | sed "s/ /$c/g"
    printf "%s" " $2 "
    printf  "%*s" $(( ($(tput cols) - ${#2} - 2) / 2 )) '' | sed "s/ /$c/g"
    printf "\n"
}
Outils personnels