Largeur terminal et presentation

De system.co.free.fr.
(Différences entre les versions)
(tput cols)
(Titre + remplissage + gestion longueur impaire)
 
(12 versions intermédiaires masquées)
Ligne 1 : Ligne 1 :
-
=Largeur du terminal et presentation des scripts=
+
=Largeur du terminal et présentation des scripts=
==tput cols==
==tput cols==
Ligne 5 : Ligne 5 :
la commande <b>tput cols</b> 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.
-
==Afficher un caractere ASCII ou UTF8 par son numero==
+
==caractère sur la largeur du terminal==
-
la commande printf permet d'afficher un caratere ASCII par son numero.<br>
+
*caratere # sur la largeur du terminal:
-
Exemple avec 101, l'octal de 'A':
+
<pre>
<pre>
-
printf "\101\n"
+
printf -v spaces '%*s' $(tput cols) ''; printf '%s\n' ${spaces// /#}
</pre>
</pre>
-
Et avec x066 l'hexadecimal de 'A':
+
autre solution:
<pre>
<pre>
-
printf "\x066\n"
+
printf "#%.0s" {$(seq $(tput cols) )}
</pre>
</pre>
-
Si votre terminal est en UTF-8, vous pouvez afficher les caracteres accentué:
+
 
 +
==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>
<pre>
-
printf "\xc3\xa0\n"
+
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>

Version actuelle en date du 6 novembre 2014 à 06:58

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 () {
# 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"
}
Outils personnels