Consignes

Liens utiles

Objectifs du TP

L'objectif de ce TP est de commencer à se familiariser avec l'invite de commande (le shell) pour les opérations courantes :

Il est bien entendu impératif de manipuler ces commandes et ces concepts en dehors du TP pour les assimiler.

Afin de rendre le TP plus "ludique", il est présenté en mode "serious game". GameShell est un "serious game" créé spécialement pour ce cours ! Ce jeux (programmé lui même en shell) ajoute quelque fonctionnalité au shell standard sous Linux (bash). Sous couvert de "jeu d'aventure", vous devrez utiliser les outils du shell ou les commandes du système pour manipuler des fichiers et dossiers, lancer des programmes, gérer des processus, etc.

Vocabulaire

terminal
L'émulateur de terminal (souvent appelé terminal tout court) est un programme qui s'exécute dans le gestionnaire de fenêtre. Il sert à exécuter des programme en mode texte, c'est à dire où toute l'interaction avec l'utilisateur se fait avec l'écran (pour afficher du texte) et le clavier (pour lire du texte). Un terminal peut par exemple exécuter un programme Python comme le pendu du TP2 d'info201.

Par défaut le terminal exécute un shell.

Il existe de nombreux émulateurs de terminaux sous Unix: xterm, rxvt-unicode, LXTerminal, gnome-terminal, konsole, xfce4-terminal, ...

shell
Le shell (aussi appelé invite de commande ou interpréteur de commandes) est un programme avec une interface en mode texte. Le shell affiche un prompt (représenté par le symbole $) et lit les commandes tapées par l'utilisateur. Ces commandes permettent d'effectuer des tâches courantes sur les fichiers, de lancer d'autres programmes, etc. Le shell offre aussi un langage permettant d'effectuer des tâche conditionnelles et / ou répétitive à l'aide de structures de controle (conditionnelles, boucles for et while, etc.) Les suites de commandes que l'on souhaite réutiliser peuvent être sauvegardées dans un fichier appelé script.

Il existe de nombreux shell sous Unix. Les plus utilisés dans le monde Linux sont bash et zsh. D'autres exemples sont csh, ksh, tcsh.

commande
Une commande est un général un petit programme externe lancé par le shell. Par exemple, la commande ls permet d'afficher la liste des fichiers contenus dans le répertoire courant. Il est également possible d'exécuter des programme très complexe (comme un traitement de texte ou un navigateur internet), mais cela est rarement fait depuis le shell.

Certaines commandes ne correspondent pas à des programmes externes mais sont interprétées directement par le shell. (La commande echo qui affiche une chaine à l'écran en est un exemple...)

1. GameShell, : un petit jeu d'aventure

1.1. Lancement du jeu

Si vous faites le TP sur les machines Linux de l'université, il ne devrait pas y avoir de problème (?!!).

Si vous faites le TP sur l'une des machines virtuelles Ubuntu du TP1, ou sur un autre système Linux, il est conseillé d'installer les paquets suivants

Comme vu au TP1, il suffit de faire

$ sudo apt-get install psmisc nano tree xdotool xinput ldap-utils

dans un terminal pour installer tout ce qu'il faut...

Dans le terminal, tapez les deux commandes suivantes :

$ rm -rf GameShell && wget http://www.lama.univ-savoie.fr/~hyvernat/Enseignement/1617/info202/TP2/gash.tar -O - | tar -x
...
...
...

Ceci permet de télécharger le jeu dans le répertoire courant.

La commande

$ bash ./GameShell/start.sh

permet ensuite de lancer le jeu en lui même...

Cette seconde commande commencera à vous poser de questions : passez à la suite du TP.

Si vous utilisez gash sans VPN, vous devrez remplacer la seconde commande par

$ bash ./GameShell/start.sh -l

1.2. Début du jeu

Lors de l'initialisation du jeu, vous devez donnez les logins des membres du groupe.

Attention, vérifiez avec votre encadrant que les binomes sont autorisés.

Vérifiez bien que les informations sont correctes avant de continuer...

1.3. Déroulement du jeu

Vous allez maintenant devoir remplir un certain nombre de missions en utilisant le shell. Ces missions vous permettront de vous familiarisez avec certaines commandes. Toutes les commandes que vous utiliserez seront des commandes standard du shell disponibles depuis n'importe quelle version de Linux. Les seuls commandes spécifiques à ce TP sont celle qui commencent par le mot clé gash :

La commande gash help vous permet d'afficher cette liste de commandes.

Il est important de garder à l'esprit que les "missions" sont simplement des tâches que l'on rencontre couramment lors de l'utilisation d'un ordinateur :

Dans GameShell, les "objets" que vous rencontrerez sont simplement des fichiers standard (souvent avec un contenu aléatoire) et les "lieux" que vous visiterez sont simplement des répertoires. Ainsi, "construire une cabane" revient simplement à créer un répertoire, et "mettre les pièces dans le coffre" revient simplement à déplacer les fichiers "pièce" dans le répertoire "coffre".

Commencez les premières missions...

Aux alentours de la mission 12, vous devrez créer un fichier "journal". Pour toutes les missions précédentes, il n'est pas nécessaire de renseigner les détails de votre solution : le fait que vous avanciez dans vos missions est suffisant.

À partir de cette question, vous devrez ajouter un petit commentaire dans votre fichier "journal" à chaque mission : ce commentaire devra donner la ou les commandes que vous avez utilisées pour effectuer la mission, ainsi que vos remarques éventuelles. La qualité de votre "journal" aura in impact sur votre note de TP...

1.4. Finir le TP

Votre note de TP sera faite sur le contenu de votre compte-rendu (fichier "journal") ainsi que vos résultats aux missions effectuées. La commande

$ gash finish

doit générer un fichier "archive" contenant tout ce qu'il faut. C'est ce fichier que vous devrez envoyer à votre encadrant de TP.

Si vous quittez le jeu, vous pourrez recommencer à votre dernière mission lors du démarrage.

Si vous changer de compte (par exemple, en passant d'un ordinateur personnel à un autre, ou d'une machine virtuelle à une autre, etc.), vous pouvez également sauvegarder l'état de votre TP avec la commande

$ gash save

Vous pourrez ensuite restaurer votre sauvegarde après transfert du fichier avec la commande

$ tar xvf <nom-du-fichier-de-sauvegarde>

(Attention, il faut que le fichiers soit copié à la racine de votre répertoire personnel...)