Twitter Facebook RSS

Accueil > GNU/Linux, Planet-libre > Mettre en forme des scripts Bash

19
septembre

Mettre en forme des scripts Bash

J'ai pour habitude de développer beaucoup de scripts Shell pour automatiser l'administration de mes serveurs sous Linux. Ça faisait un petit moment que je cherchais par quel moyen je pouvais avoir un peu de mise en forme pour mes scripts Bash (couleurs, tabulations, ...).

Et je suis tombé sur la commande "tput", qui permet de mettre en forme certaines parties de mon script.

De la couleur :

Voici comment mettre un peu de couleur dans vos scripts. Ajoutez ceci au début de votre script :

# Mise en forme
#+ Couleur de base
RESETC="$(tput sgr0)"
# Couleurs + Gras
# Rouge
RED="$(tput bold ; tput setaf 1)"
# Vert
GREEN="$(tput bold ; tput setaf 2)"
# Jaune
YELLOW="$(tput bold ; tput setaf 3)"
# Bleu
BLUE="$(tput bold ; tput setaf 4)"

Une fois que vous avez défini vos couleurs, vous n'avez plus qu'à les utiliser :

echo -n "${YELLOW}- Tâche n°1"

Préfixes par "${COULEUR}" chaque phrase que vous souhaitez mettre en forme !

Du placement, des tabulations :

Faites débuter vos scripts par la commande "clear", histoire d'avoir une console propre.

Utilisez la commande suivante, puis votre "echo", comme ceci :

tput cup 2 3
echo -n "${YELLOW}- Tâche n°1"

Cette commande aura pour effet de vous afficher "- Tâche n°1" en jaune, sur la 2ème ligne, et avec un décallage vers la droite de 3 caractères.

Une autre ? La voici :

tput cup 4 10
echo -n "${YELLOW}- Mise à jour de data/configuration/parametres.xml"
sed -i "s/www/dev/g" $DEV_FOLDER/data/configuration/parametres.xml
tput cup 4 80
echo "${GREEN}[OK]"

Cette commande, nous affiche "- Mise à jour de data/configuration/parametres.xml" en jaune, sur la 4ème ligne, et avec un décallage de 10 caractères vers la droite. De plus, nous afficherons un petit "[OK]" avec un décallage de 80 caractères vers la droite !

À partir de maintenant, vous pouvez ajouter des lignes, et organiser le placement comme vous le voulez. Là, que le premier echo fasse 10 caractères ou 20, le echo qui affiche [OK] sera dans tous les cas décallés de 80 caractères, en partant du début !

Si vous voulez partir de la fin, utilisez la commande tput cols, qui vous renvoie le nombre de caractères de large que votre console fait.

Bref, comme d'habitude, RTFM !

4 commentaires :

#1 - Le mercredi 19 septembre 2012 @ 19:58 FLOZz a dit

Salut,

Il est en fait possible de faire cela nativement en Bash, sans utiliser `tput`. Par exemple, pour afficher du texte en gras+rouge :

echo -e "\e[1;31m Hello \e[7m World \e[0m"

\e[¿¿¿¿m -- commande de formatage
1 -- gras
31 -- rouge en premier plan
7 -- Inverser la couleur de premier plan et celle d'arrière plan
0 -- Remettre tout par défaut

De plus la plupart des terminaux sont capables d'afficher jusqu'à 256 couleurs. Exemple avec un dégradé de bleu :

for i in {16..21} {21..16} ; do echo -en "\e[48;5;${i}m \e[0m" ; done ; echo

Plus de détail ici :

http://misc.flogisoft.com/bash/tip_colors_and_formatting

:)

#2 - Le jeudi 20 septembre 2012 @ 13:56 Funkyman a dit

Une coquille dans l'article:

YELLOW="$(tput bold ; tput setaf 3)"

echo -n "${JAUNE}- Tâche n°1"

#3 - Le dimanche 23 septembre 2012 @ 12:21 Maxime Gottié a dit

Tu peux aussi utiliser le fichier :
/etc/init.d/functions en l'appelant
en début de script :
. /etc/init.d/functions

Sous CentOS, tu aura accès au echo_success, echo_warning, echo_failure et plein d'autres fonctions.
Je ne suis pas certain de la présence de ce fichier sous Debian

#4 - Le dimanche 14 juillet 2013 @ 13:10 Ben a dit

Je connaissais pas, pas mal du tout, merci !

Écrire un commentaire :

Écrire un commentaire :




Vérification anti-spam - Quelle est la troisième lettre du mot vply ? : 

^ Retourner en haut