Script Bash Fun
Table of Contents
1. Script avec PS1
1.1. Petite explication
Pour creer mon script j’ai pensé au jeu de la roulette russe. La roulette russe est un jeu de hasard potentiellement mortel consistant à mettre une balle dans le barillet d’un révolver, à tourner ce dernier de manière aléatoire, puis à pointer le revolver sur sa tempe avant d’actionner la détente.
Mon script est évidemment différent (La probabilité est la même mais le risque bien minime).
Si on tombe sur la bonne probabilité (c’est à dire 5 chance sur 6). On obtient un joli PS1 de couleur arc en ciel. Le PS1 devient l’argument donnée au script suivit du caractere >. Si il n’y a eu aucun ou plus d’un argument entrée alors le PS1 devient “Quel beau PS1” de couleur arc en ciel.
En revanche si on tombe sur la mauvaise probabilité (c’est à dire 1 chance sur 6). Alors le script va ouvrir 15 terminal (on peut évidemment tous les supprimer d’un coup).
1.2. Le script:
#!/bin/bash # Nombre aleatoire entre 1 et 6 nb=$(( RANDOM % 6 + 1 )) # Initialisation de toutes les couleurs couleurs=(31 32 33 34 35 36) # 5 chance sur 6 d'obtenir un beau PS1 if [ "$nb" -lt 6 ] then # Initialisation du PS1 auquel on ajoutera chaque caractere PS1="" # Test pour savoir si il y a un unique argument if [ "$#" -ne 1 ] then machaine="Quel beau PS1" else machaine="$1" fi # Boucle pour changer la couleur de chaque caractere et le concatener dans le PS1 for (( i=0; i<${#machaine}; i++ )) do char=${machaine:$i:1} # Recuperation du caractere en position i de la chaine couleur=${couleurs[$(( i % 6 ))]} # Association de la couleur pour le caractere PS1="${PS1}\[\033[1;${couleur}m\]${char}" # Concatenation du PS1 avec le nouveau caractere colore done PS1="${PS1} \[\033[0;0m\]> " # Remise de la couleur initiale dans le terminal else # Une chance sur 6 de tomber dessus for (( i=0; i<15; i++ )) do gnome-terminal & # Ouvre 7 terminal, pas cool... :/ done fi
1.3. Exemples d’éxecution
Pour executer le script le script on utilise la commande source :
chmod +x rouletterusse.sh source ./rouletterusse.sh
Si on execute ce script on peut obtenir l’affichage:
Avec un argument on peut obtenir :
Malheureusement on peut aussi avoir:
2. C’est Noel !
2.1. le script
Le script ci-dessous affiche un joli sapin coloré avec un nombre de ligne de l’argument. Si on ne lui donne pas d’argument le sapin aura 12 ligne.
#!/bin/bash # Nombre de lignes du sapin nblines=${1:-12} # Boucle pour dessiner chaque ligne for (( i=1; i<=nblines; i++ )) do # Calcul du nombre d'espaces avant les branches du sapin nbspaces=$(( nblines-i+1 )) # Affichage des espaces for (( j=1; j<=nbspaces; j++ )) do echo -ne " " done # Calcul du nombre d'étoiles pour les branches du sapin nbstars=$(( i*2-1 )) # Affichage des branches for (( k=1; k<=nbstars; k++ )) do # Alternance des couleurs pour chaque branche if (( k%2 == 0 )) then echo -ne "\e[1;32m*" # Vert else echo -ne "\e[31m*" # Rouge fi done # Retour à la ligne echo "" done # Tronc du sapin for (( i=1; i<=2; i++ )) do for (( j=1; j<=nblines-2; j++ )) do echo -ne " " done echo -e "\e[33m||" # Jaune done # Retour à la ligne et réinitialisation des couleurs echo -e "\e[0m"
2.2. Quelques execution
Pour executer ce script on tape les commandes:
chmod +x sapin.sh
./sapin.sh
Si on execute ces commandes on obtient l’affichage:
Avec 50 lignes on a :