Rapport Bash

Table des matières

1. Script BASH

Voici un script qui montre ma maitrise de bash:

#!/bin/bash

clear

score=0

echo -e "Bonjour ! Je suis votre assistant cinéphile \U1F3A5"
sleep 2
echo "Je vais vous poser des questions basées sur des répliques de films célèbres."
sleep 2
echo "Essayons de deviner de quel film il s'agit !"
sleep 2
echo "Appuyez sur Entrer pour commencer le jeu"
read

clear
while true; do
  echo "Réplique 1:"
  echo "\"I'll be back.\""
  echo ""
  echo "De quel film cette réplique est-elle tirée ?"
  echo "1. L'Exorciste"
  echo "2. Le Seigneur des Anneaux"
  echo -e "3. Terminator \U1F525"
  echo "4. Titanic"
  read -p "Votre réponse (1-4) : " choix

  if [[ "$choix" =~ ^[1-4]$ ]]; then
    break
  else
    clear
    echo -e "\033[01;31mVeuillez entrer un nombre entre 1 et 4.\033[00m"
    echo ""
  fi
done

if [ "$choix" == "3" ]; then
  echo -e "Bravo ! \U1F389 C'est bien Terminator."
  score=$((score + 1))
else
  echo -e "Dommage, la bonne réponse était Terminator. \U1F614"
fi
sleep 2

clear
while true; do
  echo "Réplique 2:"
  echo "\"Je suis ton père.\""
  echo ""
  echo "De quel film cette réplique est-elle tirée ?"
  echo -e "1. Star Wars : L'Empire contre-attaque \U1F47E"
  echo "2. Retour vers le futur"
  echo "3. Pulp Fiction"
  echo "4. Fight Club"
  read -p "Votre réponse (1-4) : " choix

  if [[ "$choix" =~ ^[1-4]$ ]]; then
    break
  else
    clear
    echo -e "\033[01;31mVeuillez entrer un nombre entre 1 et 4.\033[00m"
    echo ""
  fi
done

if [ "$choix" == "1" ]; then
  echo -e "Bravo ! \U1F389 C'est bien Star Wars : L'Empire contre-attaque."
  score=$((score + 1))
else
  echo -e "Dommage, la bonne réponse était Star Wars : L'Empire contre-attaque. \U1F614"
fi
sleep 2

clear
while true; do
  echo "Réplique 3:"
  echo "\"La vie, c'est comme une boîte de chocolats : on ne sait jamais sur quoi on va tomber.\""
  echo ""
  echo "De quel film cette réplique est-elle tirée ?"
  echo -e "1. Forrest Gump \U1F36B"
  echo "2. Le Parrain"
  echo "3. American Beauty"
  echo "4. La Liste de Schindler"
  read -p "Votre réponse (1-4) : " choix

  if [[ "$choix" =~ ^[1-4]$ ]]; then
    break
  else
    clear
    echo -e "\033[01;31mVeuillez entrer un nombre entre 1 et 4.\033[00m"
    echo ""
  fi
done

if [ "$choix" == "1" ]; then
  echo -e "Bravo ! \U1F389 C'est bien Forrest Gump."
else
  echo -e "Dommage, la bonne réponse était Forrest Gump. \U1F614"
fi
sleep 2

clear
echo -e "Voilà, c'est fini pour aujourd'hui ! \U1F3AC"
echo "Votre score est de $score sur 3."
echo "J'espère que vous vous êtes amusé en jouant à ce petit quiz cinéma."
sleep 2
echo -e "À la prochaine ! \U1F44B"

Ce script m’a permis d’utiliser:

  • des boucles ’while’
  • des conditions if/else
  • lire des entrées clavier
  • utliser des opérations mathématiques (addition du score)

2. Changer le PS1

Voici quelques propositions de PS1:

PS1 Star Wars :

export PS1='\[\033[01;33m\]Que la Force soit avec vous, \[\033[01;31m\]\u\[\033[01;34m\] \w\[\033[00m\] 🔫 '

C’est l’heure du café !

export PS1='\[\033[01;33m\]Il est \A, cʼest lʼheure du café !\n\[\033[01;32m\]\u@\h:\[\033[01;34m\]\w\[\033[00m\] \$ '

Le PS1 du magicien Linux:

export PS1='\[\033[01;33m\]🧙‍ Magicien \[\033[06;32m\]\u\[\033[00m\] \[\033[01;34m\]\w\[\033[00m\] ✨ '

3. Utiliser des couleurs

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

typedef enum {
    DEFAULT = 0,
    ROUGE = 31,
    VERT = 32,
    JAUNE = 33,
    BLEU = 34,
    MAGENTA = 35,
    CYAN = 36,
} color_e;

typedef enum {
    NORMAL = 0,
    BOLD = 1,
    LIGHT = 2,
    ITALIC = 3,
    UNDERLINE = 4,
    BLINK = 5,
    INVERSE = 7,
} style_e;

void arc_en_ciel(char text[256]) {
    int i = 0;
    while (text[i] != '\0') {
        printf("\033[%d;%dm%c", NORMAL, rand() % 6 + 31, text[i]);
        i++;
    }
    printf("\033[0m"); // reset
}

void style_aleatoire(char text[256]) {
    int i = 0;
    while (text[i] != '\0') {
        printf("\033[%d;%dm%c", rand() % 6 + 1, rand() % 6 + 31, text[i]);
        i++;
    }
    printf("\033[0m"); // reset
}

int main(int argc, char *argv[]) {

    // init random
    srand(time(NULL));

    // get text
    char text[256] = "Hello World!";
    if (argc == 2) {
        sprintf(text, "%s", argv[1]);
    }

    // print text
    arc_en_ciel(text);
    printf("\n");
    style_aleatoire(text);
    printf("\n");

    return 0;
}

Le code suivant commence par définir dans des enum les différents codes correspondant au code couleur et au style de police de manière à pouvoir les utiliser en important le fichier comme bibliothèque.

Le fichier mais à disposition deux fonctions à savoir `arcenciel` qui prend en paramètre une chaine de caractère et l’affiche dans le terminale en changer la couleur de chaque caractères, et la fonction `stylealeatoire` qui de manière similaire affiche le texte dans le terminal en changer le style de chaque caractères.

Enfin on peut passer une chaine de caractères en argument lors de l’exécution pour utiliser un texte personnalisé a défaut de quoi la chaine sera ’Hello World!’.

Retour vers ma page Web personnelle

Crédits :

Date: 2023-25-03

Auteur: Jules Girard

Created: 2023-04-26 mer. 19:22