Une semaine pour découvrir Linux — 3e et terminale¶
Cinq journées de six heures pour faire découvrir à des élèves ce qui se cache derrière les serveurs, les sites web et le code : Linux, le terminal, Bash, Python, Git et la forge Forgejo. Le même déroulé sert pour les deux niveaux ; ce qui change, c'est la profondeur.
Brouillon à valider
Ce programme est une première proposition. Les points encore ouverts sont listés en fin de page, dans À décider avant la semaine.
Les principes¶
Toujours dire pourquoi. Chaque journée commence par la question à laquelle elle répond : à quoi sert ce qu'on va apprendre, et quel problème cela règle. Une commande dont on ne comprend pas l'utilité s'oublie dès le lendemain. Les encadrés Pourquoi de chaque journée donnent ces réponses, à reformuler devant la classe.
Alterner toutes les 45 minutes. Une journée de 6 h devant un écran ne tient pas sans changer de forme. Chaque demi-journée enchaîne un cours court (sur le site), un jeu, de la pratique sur un vrai terminal, et si possible une activité débranchée.
Un fil rouge : l'enquête. Lundi matin, on découvre que le site du club informatique d'un lycée imaginaire a été modifié pendant la nuit. Chaque après-midi, les élèves avancent dans l'enquête sur les vrais postes Linux de la salle, avec les commandes apprises le matin. Vendredi, une épreuve finale en équipes désigne le coupable et remet le site en état.
Les outils :
| Outil | Rôle |
|---|---|
| dynamic.alpinux.org | Cours avec terminal d'essai intégré, jeux, quiz. Rien à installer. |
| Les postes Linux de la salle | La pratique pour de vrai, et l'enquête. |
| Ce wiki | Les fiches de référence, et ce programme. |
| La forge d'Alpinux | Vendredi : publier son travail et collaborer. |
| Un carnet de bord papier | Une page par jour : ce que j'ai appris, une commande à retenir, une question. |
Le déroulé type d'une journée¶
| Horaire | Durée | Activité |
|---|---|---|
| 9 h 00 | 15 min | Rappel de la veille : quiz éclair au tableau, ou une commande « mystère » à deviner |
| 9 h 15 | 45 min | Le pourquoi du jour, puis le cours sur le site, avec le terminal d'essai |
| 10 h 00 | 30 min | Jeu sur le site |
| 10 h 30 | 15 min | Pause |
| 10 h 45 | 75 min | Pratique sur le vrai terminal, en binômes |
| 12 h 00 | Repas | |
| 13 h 30 | 15 min | Activité débranchée, pour se remettre en route |
| 13 h 45 | 90 min | Enquête : le chapitre du jour |
| 15 h 15 | 15 min | Pause |
| 15 h 30 | 45 min | Approfondissement, différent selon le niveau |
| 16 h 15 | 15 min | Bilan et carnet de bord |
Lundi — Linux et le terminal¶
Objectif du jour : savoir ce qu'est Linux, se repérer dans l'arborescence et s'y déplacer au clavier.
Pourquoi le terminal, alors qu'on a une souris ?
- Les serveurs n'ont pas d'écran. Les machines qui font tourner les sites web, les jeux en ligne ou les réseaux sociaux sont presque toutes sous Linux, dans des salles sans écran ni souris. On les pilote à distance, en tapant des commandes.
- Une commande se note, se copie, se répète. Un clic ne s'écrit pas dans un tuto ; une commande, si. On peut l'envoyer à quelqu'un, la relancer demain, ou la confier à un script mercredi.
- C'est la porte d'entrée de toute la semaine : Bash, Python et Git s'utilisent depuis le terminal.
- Accueil (30 min) : qui est Alpinux, ce qu'est un logiciel libre, où se trouve Linux sans qu'on le voie : téléphones Android, box Internet, téléviseurs, serveurs, et les 500 supercalculateurs les plus puissants du monde.
- Débranché — l'arbre humain : chaque élève porte une étiquette de dossier (
/,home,alex,etc…) et tient l'épaule de son « parent ». Un élève-curseur se déplace selon les commandescdlancées par la classe. Chemins absolus et relatifs se comprennent dans l'espace avant de se comprendre à l'écran. - Site : jeu Où range-t-on quoi ?, puis cours Le terminal : se repérer et se déplacer et jeu Premier jour sur le serveur.
- Vrai terminal : ouvrir un terminal (Ctrl + Alt + T), les trois défis de fin de cours, explorer son dossier personnel. Fiche : Le terminal.
- Enquête, chapitre 1 — L'alerte : le dossier de l'enquête apparaît sur les postes. Le
premier message est caché quelque part :
ls -a,cd,cat.
| 3e | Terminale | |
|---|---|---|
| Approfondissement | Course d'orientation dans l'arborescence : trouver des fichiers à partir d'indices (« je suis un réglage du réseau… ») | Comment Linux démarre : noyau, /boot, /proc, PID 1 ; explorer /proc/cpuinfo et /proc/meminfo |
Mardi — Fichiers, droits et recherche¶
Objectif du jour : créer, déplacer et supprimer des fichiers, comprendre les droits, et retrouver une information dans une montagne de texte.
Pourquoi des droits sur les fichiers ? Pourquoi chercher avec des commandes ?
- Linux est partagé. Plusieurs personnes et plusieurs services utilisent la même machine. Les droits empêchent un utilisateur de lire le courrier d'un autre, un site web piraté de toucher au reste du système, et vous-même d'effacer par erreur un fichier important.
- On ne lit pas un journal de 50 000 lignes, on le filtre.
greptrouve en une seconde la ligne qui compte. Enchaînées avec|, de petites commandes répondent à des questions précises : combien d'erreurs ? quand ? venant d'où ?
- Site : jeu Préparer un déploiement, puis rwx : le jeu des permissions.
- Vrai terminal :
mkdir,cp,mv,rm, les redirections>et>>, et un premier éditeur de texte dans le terminal, nano. - Débranché — le pipe humain : une file d'élèves se passe un paquet de cartes. Le premier
ne garde que les cartes rouges (
grep), le suivant les trie (sort), le dernier les compte (wc -l). C'est exactement ce que fait|. - Enquête, chapitre 2 — Les morceaux : le message du pirate est découpé en plusieurs
fichiers à rassembler (
cat,>), l'un d'eux est verrouillé (chmod), et un indice se cache dans un long journal (grep).
| 3e | Terminale | |
|---|---|---|
| Approfondissement | Défi « ménage » : ranger un dossier en désordre dans des sous-dossiers par type de fichier | find, et les enchaînements grep … \| sort \| uniq -c \| sort -n sur un vrai journal |
Mercredi — Bash : faire travailler l'ordinateur à sa place¶
Objectif du jour : écrire un script, c'est-à-dire une suite de commandes que l'on peut relancer à volonté.
Pourquoi écrire des scripts ?
- Ce qu'on tape deux fois, on l'écrit une fois. Un script refait le même travail, dans le même ordre, sans oubli ni faute de frappe, autant de fois qu'il le faut.
- L'ordinateur travaille sans vous : une sauvegarde à 3 h du matin, la vérification de cent fichiers, la préparation de trente postes identiques.
- Un script est une procédure écrite. Il se relit, se corrige, se partage, et il dit exactement ce qui a été fait.
- Cours : la ligne
#!/bin/bash,chmod +x, les variables,echo,read,if,for. - Site : jeu Sous le capot (ce qui se passe quand on lance une commande) et, pour les terminales, Incident à 3 h du matin.
- Débranché — le robot idiot : un élève joue le robot qui exécute à la lettre un « script » écrit par un autre groupe pour, par exemple, faire un sandwich. Les bugs apparaissent tout seuls, et l'on comprend pourquoi un programme doit être précis.
- Enquête, chapitre 3 — Le script du pirate : un script laissé sur le serveur. Il faut le lire sans le lancer, comprendre ce qu'il fait, puis décoder le message qu'il a chiffré. En 3e, le décodage tient en une commande donnée par étapes ; en terminale, les élèves écrivent le script de décodage eux-mêmes.
| 3e | Terminale | |
|---|---|---|
| Script du jour | Un quiz interactif en Bash avec read et if, à faire passer au voisin |
Un script de sauvegarde qui prend des arguments ($1), vérifie les erreurs ($?) et date ses archives |
| Approfondissement | Commandes « pour le plaisir » si elles sont installées : figlet, cowsay, sl |
Processus et signaux : ps, kill, top ; lien avec le thème « processus » de NSI |
Jeudi — Python¶
Objectif du jour : écrire et lancer un programme Python depuis le terminal, puis s'en servir comme outil.
Pourquoi Python, puisqu'on a Bash ?
- Chaque outil a son terrain. Bash est imbattable pour enchaîner des commandes et manipuler des fichiers. Dès qu'il faut calculer, mémoriser des données, les trier finement ou écrire un vrai programme, il devient pénible : Python est fait pour ça.
- Python est partout : l'analyse de données, l'intelligence artificielle, les sites web, l'automatisation, les cartes électroniques. Et c'est le langage de la spécialité NSI au lycée.
- Le même problème, deux outils : l'après-midi, on compte les connexions d'un journal en Python, comme on l'a fait en Bash mardi. Comparer les deux, c'est apprendre à choisir.
Le wiki contient déjà un cours complet de Python pour débutants : la journée s'appuie sur ses chapitres plutôt que de tout réécrire. Ce cours tutoie son lecteur, à la différence du reste de ce programme.
- Lancer Python : l'interpréteur interactif
python3, puis un fichier.pyécrit avec nano et lancé avecpython3 mon_programme.py. - Enquête, chapitre 4 — Les traces : un journal de connexions de plusieurs milliers de lignes. Écrire un programme Python qui compte les connexions par adresse et par heure, pour trouver quand le pirate est entré.
| 3e | Terminale | |
|---|---|---|
| Notions | Variables, input, conditions, boucles : chapitres 01, 02 et 03 |
Fichiers, dictionnaires, CSV : chapitres 04 et 07 |
| Projet | Le jeu « devine le nombre », puis des dessins avec turtle |
Le comptage de mardi, réécrit en Python : comparer les deux approches |
Pour les élèves de terminale NSI
Python est déjà leur langage. L'intérêt de la journée n'est pas d'apprendre la syntaxe,
mais de l'utiliser hors de l'éditeur de l'école : depuis le terminal, sur de vraies
données, avec la bibliothèque standard (pathlib, csv, collections).
Vendredi — Git, Forgejo, et le dénouement¶
Objectif du jour : garder l'historique de son travail avec Git, le publier sur une forge, et travailler à plusieurs sur le même code.
Pourquoi Git en local, sur sa propre machine ?
Git enregistre des photos successives d'un projet, appelées commits, chacune avec sa date, son auteur et un message qui dit ce qui a changé et pourquoi. Tout se passe sur votre ordinateur, sans réseau ni compte.
- Fini
rapport_final_v3_vraiment_final.txt. Un seul fichier, et toutes ses versions rangées dans l'historique. - On peut revenir en arrière. Une modification a tout cassé ? On retrouve la dernière version qui marchait, en une commande.
- On sait ce qui a changé entre deux versions (
git diff), ligne par ligne, et pourquoi grâce au message du commit. - On essaie sans risque. Une idée hasardeuse se développe sur une branche à part ; si elle ne donne rien, on l'abandonne sans avoir abîmé le reste.
Pourquoi Git à distance, sur une forge ?
Une forge comme Forgejo garde une copie du projet sur un serveur. On y envoie ses
commits (git push) et on récupère ceux des autres (git pull).
- Une sauvegarde hors de sa machine. Un disque qui lâche, un ordinateur perdu, un poste de salle réinitialisé : le travail reste sur la forge.
- Travailler à plusieurs sur le même projet. Chacun travaille sur sa copie, puis Git assemble les modifications, et signale quand deux personnes ont touché à la même ligne.
- Faire relire avant d'intégrer. Une pull request propose une modification : les autres la lisent, la commentent, et ne l'acceptent qu'une fois convaincus. C'est ainsi que se fait ce wiki.
- Partager et publier. Un dépôt public, c'est un projet que tout le monde peut lire, réutiliser et améliorer : c'est le fonctionnement même du logiciel libre.
Dans quel ordre ? D'abord en local : on travaille, on fait des commits, on se trompe et on corrige, sans rien montrer à personne. Ensuite seulement, on envoie sur la forge un travail propre. Le local, c'est le brouillon daté ; la forge, c'est le classeur partagé.
- Débranché — la machine à remonter le temps : un texte écrit à plusieurs sur une feuille,
avec une photo prise à chaque étape. Revenir à la photo d'hier, c'est un
git checkout; la pile de photos, c'estgit log. Puis deux groupes modifient chacun leur copie de la même phrase : c'est un conflit, qu'il faut régler en se parlant. - Git en local :
git init,git add,git commit,git log,git diff. Chacun versionne les scripts et programmes écrits pendant la semaine. - Forgejo : déposer ce travail sur la forge d'Alpinux, en explorer l'interface web, et proposer une modification sur le dépôt d'un camarade.
- Enquête, chapitre 5 — Le dénouement : épreuve en équipes, chronométrée. Le site du club est versionné avec Git, et c'est ce qui va trahir le coupable : chaque commit dit qui a modifié quoi et quand. Il faut identifier le coupable, croiser avec les indices des jours précédents, puis remettre le site en état en revenant à une version saine.
- Clôture (45 min, à la place de l'approfondissement) : remise des diplômes, ce qu'on retient de la semaine, et la suite (réunions Alpinux, install parties, spécialité NSI).
| 3e | Terminale | |
|---|---|---|
| Forgejo | Modifier un fichier depuis l'interface web et ouvrir une pull request | Branches, pull request depuis le terminal, résolution d'un conflit provoqué exprès |
Où en est la préparation¶
| Jour | Cours sur le site | Jeux sur le site | Enquête |
|---|---|---|---|
| Lundi | ✅ Le terminal | ✅ Où range-t-on quoi ?, Premier jour sur le serveur | à écrire |
| Mardi | à écrire : fichiers et droits, chercher et filtrer | ✅ Préparer un déploiement, rwx | à écrire |
| Mercredi | à écrire : Bash | ✅ Sous le capot, Incident à 3 h du matin | à écrire |
| Jeudi | le cours Python du wiki | à prévoir | à écrire |
| Vendredi | à écrire : Git local et Forgejo | à prévoir | à écrire |
L'enquête sera installée sur chaque poste par un script : un dossier par élève, avec les fichiers, les journaux et le dépôt Git du site du club.
Ce qu'il faut préparer¶
Sur les postes, à vérifier en amont :
- un terminal accessible aux élèves, et les commandes
git,python3,nano,tree; - le paquet
python3-tk, sans lequel le moduleturtlede Python ne fonctionne pas ; - Git configuré avec un nom et une adresse pour chaque session
(
git config --global user.nameetuser.email), sans quoigit commitrefuse de fonctionner. Pour des mineurs, un pseudonyme et une adresse fictive suffisent en local ; - facultatif, pour le plaisir :
figlet,cowsay,sl; - l'accès à
dynamic.alpinux.orget àgitea.alpinux.orgdepuis le réseau de l'établissement (certains filtres bloquent les forges) ; - le dossier de l'enquête, installé par un script à lancer sur chaque poste.
Pour la salle : un vidéoprojecteur, des étiquettes et des cartes pour les activités débranchées, un carnet de bord par élève, des diplômes à imprimer.
À décider avant la semaine¶
| Question | Pourquoi c'est important |
|---|---|
Les comptes Forgejo des élèves. Comptes AlpID nominatifs, comptes anonymes de classe (eleve01, eleve02…), ou forge installée localement pour la semaine ? |
Les élèves sont mineurs : la solution la plus simple côté données personnelles est celle des comptes anonymes, créés à l'avance et supprimés après la semaine. |
| Les sessions sont-elles conservées d'un jour à l'autre ? | Beaucoup de postes d'établissement effacent tout à la déconnexion. L'enquête et le travail de la semaine doivent survivre jusqu'au vendredi : sinon, prévoir une clé USB par binôme, ou s'appuyer plus tôt sur la forge. |
| Le nombre d'élèves et de postes. | Le travail en binômes demande un poste pour deux au minimum. |
La distribution installée et les droits. Peut-on installer des paquets ? Les élèves ont-ils sudo ? |
Sans droits d'installation, il faut vérifier toute la liste ci-dessus avant le lundi. |
| Les horaires exacts de l'établissement. | Le déroulé type se décale facilement, mais les pauses et le repas sont imposés. |
| Les scores sur le site. | Ils ne s'enregistrent qu'avec un compte AlpID. Sans compte, on peut faire un classement par équipe à la main, à partir des écrans de fin de partie. |