Comment puis-je imprimer $myvar
rembourré de sorte qu'il soit au centre du terminal, et de chaque côté se trouvent =
au bord de l'écran ?
Réponse acceptée :
J'ai trouvé deux informations ici sur le réseau stackexchange qui m'ont aidé à arriver à cette réponse de travail :
- https://stackoverflow.com/q/263890/5419599
- https://stackoverflow.com/q/4409399/5419599
Cependant, le code de cette réponse est le mien.
Consultez l'historique des modifications si vous souhaitez plus de verbosité ; J'ai supprimé tous les trucs et "étapes en cours de route".
Je pense que la meilleure façon est :
center() {
termwidth="$(tput cols)"
padding="$(printf '%0.1s' ={1..500})"
printf '%*.*s %s %*.*sn' 0 "$(((termwidth-2-${#1})/2))" "$padding" "$1" 0 "$(((termwidth-1-${#1})/2))" "$padding"
}
center "Something I want to print"
Sortie sur un terminal de 80 colonnes :
========================== Something I want to print ===========================
Notez que le remplissage ne doit pas nécessairement être un seul caractère ; en fait le padding
la variable n'est pas, elle fait 500 caractères dans le code ci-dessus. Vous pouvez utiliser une autre forme de rembourrage en changeant uniquement le padding
ligne :
padding="$(printf '%0.2s' ^v{1..500})"
Résultats en :
^v^v^v^v^v^v^v^v^v^v^v^v^v Something I want to print ^v^v^v^v^v^v^v^v^v^v^v^v^v^
Une autre utilisation pratique est :
clear && center "This is my header"