Introduction
Bash ou Zsh sont les langages de programmations du Shell des systèmes Linux et MacOS (utilisables aussi sur Windows), ainsi les comprendre est primordial quand on veut maîtriser son appareil.
Cet article vise à introduire certaines notions de scripting shell sur les systèmes Unix.
Exemple de Script
On va créer un script qui va demander à l'utilisateur de rentrer une phrase, puis qui va l'afficher lettre par lettre dans différentes couleurs :
#!/bin/bash
# Fonction pour générer une couleur aléatoire parmi Rouge, Vert et Bleu
get_random_color() {
local colors=("31" "32" "34") # 31 = Rouge, 32 = Vert, 34 = Bleu
echo ${colors[$RANDOM % ${#colors[@]}]} # Choisit une couleur au hasard
}
# Demander à l'utilisateur d'entrer une phrase
read -p "Entrez une phrase : " phrase
# Séparer la phrase en mots
for word in $phrase; do
# Choisir une couleur aléatoire pour chaque mot
color=$(get_random_color)
# Afficher chaque lettre du mot une par une avec la couleur
for (( i=0; i<${#word}; i++ )); do
# Afficher la lettre en couleur
echo -n -e "\033[${color}m${word:$i:1}\033[0m"
sleep 0.1 # Petite pause pour afficher une lettre à la fois
done
# Afficher un espace entre les mots
echo -n " "
done
# Aller à la ligne après l'affichage de la phrase
echo
Explications
Fonction get_random_color :
Cette fonction choisit une couleur aléatoire parmi trois options : rouge (31), vert (32), ou bleu (34).
Le tableau colors contient les codes de couleur ANSI, et RANDOM % ${#colors[@]} génère un indice aléatoire pour choisir l'une de ces couleurs.
Lecture de la phrase :
Le script demande à l'utilisateur d'entrer une phrase grâce à read -p.
Séparation de la phrase en mots :
La phrase est séparée en mots grâce à la boucle for word in $phrase. En gros le code va passer en revue chaque bloc dans la phrase, chaque nouveau bloc sera un mot et aura une fonction appliquée dessus.
Affichage des lettres de chaque mot :
Pour chaque mot, on affiche chaque lettre individuellement.
L'option \033[${color}m applique la couleur choisie au mot, et \033[0m réinitialise la couleur après chaque lettre.
Affichage avec pause :
sleep 0.1 permet de faire une petite pause (0.1 seconde) entre l'affichage de chaque lettre.
Affichage des mots séparés par un espace :
Un espace est affiché après chaque mot, et la phrase entière est affichée à la fin sur une nouvelle ligne.
Utilisation d'un script
Ce bout de code vous pouvez le rentrer dans un fichier en .sh ou .bash, une fois que c'est fait il faut lui attribuer des droits en exécution avec ceci :
chmod +x file.sh
Puis pour l'exécuter :
./file.sh
ou ./file.bash
Conclusion
Voilà vous avez écrit votre premier script Bash/Zsh, bien joué.