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 est soumis à la licence GPLv3 https://www.gnu.org/licenses/gpl-3.0.en.html
GameShell devrait (??) fonctionner sur un système Linux standard. Pour Debian/Ubuntu, il faut avoir les paquets suivants :
- psmisc
- nano
- tree
- x11-apps
- python3 (pour générer la mission 33)
- gcc (pour générer la mission 30)
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
En récupérant l'archive https://github.com/phyver/GameShell/raw/master/GameShell.tgz
$ wget https://github.com/phyver/GameShell/raw/master/GameShell.tgz -O - | tar -xz
$ ./GameShell/start.sh
...
...
Après avoir cloné le dépot :
$ git clone https://github.com/phyver/GameShell.git
$ ./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...
Après avoir cloné le dépot :
$ 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.tgz README World/ bin/ doc/ lib/ missions/ start.sh*
Le fichier GameShell.tgz
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.tgz /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 commandesgash HELP
: affiche une liste plus complète des commandesgash show
: affiche l'objectif de la mission courantegash check
: vérifie si la mission actuelle est validéegash 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 pargash 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)
- Pierre Hyvernat
- Rodolphe Lepigre
- Christophe Raffalli
- Xavier Provencal
- Clovis Eberhart
- Sébastien Tavenas
- Tiemen Duvillard
Ce code est distribué sous licence GPL.
Merci de pointer vers ce dépot si vous l'utilisez.