phyver / GameShell

a game to learn (or teach) how to use standard commands in a Unix shell
GNU General Public License v3.0
2.17k stars 138 forks source link

GameShell: a "game" to teach the Unix shell

Illustration inspired by the game

Teaching first-year university students or high schoolers to use a Unix shell is not always the easiest or most entertaining of tasks. GameShell was devised as a tool to help students at the Université Savoie Mont Blanc to engage with a real shell, in a way that encourages learning while also having fun.

The original idea, due to Rodolphe Lepigre, was to run a standard bash session with an appropriate configuration file that defined "missions" which would be "checked" in order to progress through the game.

Here is the result...

GameShell's first mission

GameShell is available in English, French and Italian.

Feel free to send us your remarks, questions or suggestions by opening issues or submitting pull requests. We are particularly interested in any new missions you might create!

Getting started

GameShell should work on any standard Linux system, and also on macOS and BSD (but we have run fewer tests on the latter systems). On Debian or Ubuntu, the only dependencies (besides bash) are the gettext-base and awk packages (the latter is generally installed by default). Some missions have additional dependencies: these missions will be skipped if the dependencies are not met. On Debian or Ubuntu, run the following command to install all game and mission dependencies.

$ sudo apt install gettext man-db procps psmisc nano tree ncal x11-apps wget

Check the user manual to see how to install the game dependencies on other systems (macOS, BSD, ...).

Assuming all the dependencies are installed, you can try the latest version of the game by running the following two commands in a terminal.

$ wget https://github.com/phyver/GameShell/releases/download/latest/gameshell.sh
$ bash gameshell.sh

The first command will download the latest version of the game in the form of a self-extracting archive, and the second command will initialise and run the game from the downloaded archive. Instructions on how to play are provided in the game directly.

Note that when you quit the game (with control-d or the command gsh exit) your progression will be saved in a new archive (called gameshell-save.sh). Run this archive to resume the game where you left it.

If you prefer not running foreign shell scripts on your computer, you can generate a Docker image with the following:

$ mkdir GameShell; cd GameShell
$ wget --quiet https://github.com/phyver/GameShell/releases/download/latest/Dockerfile
$ docker build -t gsh .
$ docker run -it gsh

The game will NOT be saved when you exit, and additional flags are required if you want to run X programs from inside GameShell. Refer to this section of the user manual.

Documentation

To find out more about GameShell, refer to the following documents:

Who is developing GameShell?

Developers

The game is currently being developed by:

Mission contributors

Translation

Italian Version

Special thanks

Licence

GameShell is released under the GPLv3.

Please link to this repository if you use GameShell.

GameShell is open source and free to use. One way you can acknowledge the work it required is by sending an actual postcard to

  Pierre Hyvernat
  Laboratoire de Mathématiques, CNRS UMR 5127
  Université de Savoie
  73376 Le Bourget du Lac
  FRANCE