9
votes

Centre d'alignement de texte - Script Shell

Je crée un script basé sur une console simple à l'aide d'un script shell.it sera exécuté sur mon coquille Bash C'est un simple menu d'affichage basé sur un menu un ensemble d'options.

Maintenant, je veux faire le centre alignez le texte en fonction de la taille de l'écran. Comment puis-je aligner le texte au centre de l'écran? Assis me


0 commentaires

4 Réponses :


0
votes

Solution Perl simple:

perl -pe '$sp = " " x (($ENV{COLUMNS} - length) / 2); s/^/$sp/'


3 commentaires

Essayez-le de voir. Il suffit d'ajouter la ligne dans votre script, de la tuyauterie du texte à centrer sur celui-ci ( générer-text | Perl ... ) ou l'utiliser comme argument ( perl ... texte.txt )


Enfin j'ai trouvé la solution: colonnes = $ (tput cols) title = "bonjour monde!" printf "% * s \ n" $ ((($ {# # title} + $ colonnes) / 2)) "$ title"


@Karthickv: Veuillez poster votre solution comme une réponse distincte, pas comme un commentaire à cette réponse. Cela aidera les autres à le trouver plus facilement.



21
votes

Enfin j'ai trouvé la solution :)

COLUMNS=$(tput cols) 
title="Hello world!" 
printf "%*s\n" $(((${#title}+$COLUMNS)/2)) "$title"


2 commentaires

Si vous avez besoin d'une doublure, cela prend en charge des arguments de ligne de commande: printf "% * s \ n" $ (($ (echand $ * | wc -c) + 80) / 2)) " $ * " Entrée à partir des arguments de la ligne de commande, utilise WC pour compter le nombre de caractères et la valeur par défaut justifie 80 caractères.


L'ajout de la longueur du titre se déplace à droite par sa longueur, juste $ colonnes / 2 fonctionne bien pour moi.



9
votes

sur les systèmes basés sur la BSD, y compris les MacOS, l'utilitaire FMT code> a un drapeau -c code> pour centrer le texte.

echo $text | fmt -c -w $COLUMNS


0 commentaires

0
votes

Pour imprimer du texte au centre: xxx

sortie: xxx


0 commentaires