Script Bash Fun

Table of Contents

prepisima.png

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: roulettesansarg1.png

Avec un argument on peut obtenir : rouletteavecarg.png

Malheureusement on peut aussi avoir: pasdechance.png

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: sapinsansarg.png

Avec 50 lignes on a : sapinavecarg.png

Author: Antoine Bourdier

Created: 2023-03-17 ven. 20:01