Consignes
-
Les étudiants qui utilisent les machines de l'université devront démarrer leur ordinateur sous Linux. En cas de problème (et seulement dans ce cas), vous pouvez essayer d'utiliser la machine virtuelle installée au TP1. Il est de votre responsabilité de vérifier que la machine virtuelle fonctionne...
-
Les étudiants qui utilisent leur portable doivent avoir accès à un système Linux standard. La machine virtuelle installée pendant le TP1 convient directement pour ce TP.
-
Le rendu de TP se fera par TPLab : vous devrez envoyer le fichier généré par la command gash finish. Attention, une partie de votre note se fera à partir de votre compte-rendu (fichier "journal", voir question 3).
Liens utiles
-
email des enseignants
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 :
-
manipulation de fichiers et dossiers,
-
lancement de programmes,
-
assemblage de commandes simples pour des taches complexes.
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
-
psmisc (obligatoire, installé par défaut sous Ubuntu)
-
nano (obligatoire, installé par défaut sous Ubuntu)
-
tree (conseillé, non installé par défaut sous Ubuntu)
-
xdotool (conseillé, non installé par défaut sous Ubuntu)
-
xinput (conseillé, installé par défaut sous Ubuntu)
Comme vu au TP1, il suffit de faire
$ sudo apt-get install psmisc nano tree xdotool xinput
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/1718/info202/TP2/GameShell.tar -O - | tar -x
...
...
...
Ceci permet de télécharger le jeu dans le répertoire courant.
La commande
$ bash ./GameShell/start.sh -L
permet ensuite de lancer le jeu en lui même...
Cette seconde commande commencera à vous poser de questions : passez à la suite du TP.
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 :
-
gash check
qui vérifie si votre mission courante est validée, -
gash show
qui affiche l'objectif de la mission courante, -
gash finish
qui finalise votre partie pour envoi à l'encadrant.
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 :
-
créer des répertoires
-
créer des fichiers
-
chercher des fichiers selon des critères simples ou complexes
-
lancer ou arrêter d'autre programmes
-
...
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 14, 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
30 minutes avant la fin de la séance, votre encadrant vous demandera d'arrêter les missions de GameShell. Vous devrez alors prendre le temps de répondre aux questions suivantes, dans votre journal.
Attention, les réponses à ces questions sont prioritaires sur l'avancement de vos missions !
-
Listez les commandes que vous avez utilisé, en donnant, en quelques mots seulement, leur utilisation.
Par exemple :
ls : liste le contenu du répertoire courant
-
Listez les éléments du jeu que vous avez rencontré / utilisé, et expliquez à quoi ils correspondent vraiment.
Par exemple :
lieu : répertoire
-
Donnez plusieurs situations dans lesquelles l'utilisation du shell peut être plus efficace qu'une interface graphique du style "gestionnaire de fichiers".
Essayez autant que possible de donner des exemples de situations que vous avez rencontrées réellement.
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>