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 :
- Template : github