GameShell (gash) est le résultat d'une réflexion sur comment enseigner les rudiments (et un peu plus) du shell à des étudiants en première année à l'université Savoie Mont Blanc.
L'idée initiale, due à Rodolphe Lepigre, était de lancer un shell bash avec un fichier de configuration qui permettait d'effectuer des "missions", qui seraient "validées" pour avancer.
N'hésitez pas à m'envoyer vos remarques, questions ou suggestions autour de GameShell. En particulier, je suis preneur de nouvelles missions !
GameShell devrait (??) fonctionner sur un système Linux standard.
Pour macOS, il faut installer coreutils
et md5sha1sum
. Le plus simple
de d'utiliser le gestionnaire de paquet homebrew :
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
puis d'installer les paquets nécessaires avec
$ brew install coreutils
$ brew install md5sha1sum
Pierre Hyvernat
http://www.lama.univ-smb.fr/~hyvernat
$ ./GameShell/start.sh
Attention, vous êtes en train d'exécuter
GameShell dans la version de développement.
Faut-il le continuer ? [o/N]
o
...
...
Note : lancer GameShell directement dans le répertoire des sources ne devrait pas poser de problème...
$ cd GameShell
$ ./bin/archive.sh -M"*find*"
copie des missions choisies
/export/home/hyvernat/src/Shell/GameShell/missions/20_find_1 --> 01_find_1
/export/home/hyvernat/src/Shell/GameShell/missions/31_find_2 --> 02_find_2
/export/home/hyvernat/src/Shell/GameShell/missions/32_find_3_xargs --> 03_find_3_xargs
suppression des script 'auto.sh' des missions
choix du mode de lancement
création de l'archive
suppression du répertoire temporaire
$ ls
GameShell.tar README World/ bin/ doc/ lib/ missions/ start.sh*
Le fichier GameShell.tar contient une instance de GameShell avec uniquement
les 3 missions autour de la commande find
.
On peut maintenant copier cette archive n'importe où et lancer le jeu:
$ mv GameShell.tar /tmp
$ cd /tmp
$ tar -xf GameShell.tar
$ ./GameShell/start.sh
GameShell est simplement une instance de bash avec des fonctions
supplémentaires. Ces fonctionnalités passent par la commande gash
.
- gash help : affiche une petite liste des commandes
- gash HELP : affiche une liste plus complète des commandes
- gash show : affiche l'objectif de la mission courante
- gash check : vérifie si la mission actuelle est validée
- gash restart : recommence la mission courante
Chaque mission est contenue dans un répertoire dédié et peut fournir les fichiers suivants
-
goal.txt petite description de la mission, affichée par
gash show
(fichier texte, obligatoire) -
static.sh fichier lu par bash au lancement de GameShell. C'est par exemple dans ce fichier que l'on peut créer des répertoire qui existeront pour toute les missions. Remarque : ce fichier est lu par bash (
source static.sh
) et peut donc par exemple définir des variables d'environnement. (fichier bash, facultatif) -
init.sh fichier lu par bash au lancement de la mission. C'est par exemple dans ce fichier qu'on peut (re)générer des parties dynamiques de la mission.
-
check.sh fichier lu par bash pour vérifier que la mission est validée. Remarque : ce fichier est lu par bash (
source check.sh
) et doit se terminer par une commande renvoyant la valeur 0 (typiquement,true
) en cas de succès, et par une commande renvoyant une valeur différente de 0 (typiquementfalse
) en cas d'échec. (fichier bash, obligatoire) -
auto.sh fichier lu par bash pour valider automatiquement la mission Remarque : ce fichier est lu par bash (
source auto.sh
). (fichier bash, facultatif) -
treasure.sh fichier bash lu par bash après validation de la mission. Cela permet d'ajouter des fonctionnalités comme "récompense" à certaines missions. (fichier bash, facultatif)
-
treasure.txt fichier texte affiché par bash après validation de la mission (fichier texte, facultatif)