Mac20 livrablesQuiz corrigé
Apprivoiser le terminal sur Mac
Ranger et sauvegarder tes dossiers en ligne de commande — au clavier, pas à la souris.
Par Josselyn C., prof de BTS SIO. Publié le , mis à jour le .
- On manipule
- le Terminal de macOS (shell zsh) + des scripts .sh
- Durée
- ~5-6h (+ défis bonus) · Public : débutant absolu, aucun pré-requis
On travaille UNIQUEMENT dans un dossier bac à sable ~/mon-atelier. Jamais dans les dossiers système (/System, /Library).
Ce qu'on fait aujourd'hui
Tu vas ranger et sauvegarder tes dossiers — mais sans la souris, uniquement au clavier, dans le Terminal de ton Mac. Pourquoi ? Parce qu'un informaticien qui sait taper 3 commandes fait en 10 secondes ce qui prend 5 minutes à la souris — et ces commandes sont reproductibles et automatisables (on les met dans un script qui tourne tout seul).
Bonne nouvelle : le terminal du Mac est un terminal Unix (comme Linux). Ce que tu apprends ici te servira sur tous les serveurs du monde professionnel.
Mode d'emploi — tu avances SEUL
Les notions de la Partie 1 — le terminal
| Notion | La commande | À quoi ça sert |
|---|---|---|
| Ouvrir le terminal | Terminal.app | Donner des ordres écrits au Mac |
| Savoir où on est | pwd | Afficher le dossier courant |
| Lister le contenu | ls | Voir les fichiers et dossiers |
| Se déplacer | cd | Entrer dans un dossier / remonter |
| Créer un dossier | mkdir | Fabriquer l'arborescence de travail |
| Copier | cp / cp -R | Dupliquer un fichier / une arborescence |
| Sauvegarder « pro » | rsync | Cloner un dossier de façon robuste |
| Automatiser | scripts .sh | Enchaîner des commandes en un fichier |
Le vocabulaire de départ
| Mot | Ça veut dire quoi |
|---|---|
| Terminal | L'appli macOS où tu tapes des ordres écrits au lieu de cliquer (Terminal.app). |
| Shell (zsh) | Le programme qui lit tes commandes. Sur macOS récent c'est zsh. L'invite finit par %. |
| Chemin (path) | L'adresse d'un fichier, ex. ~/mon-atelier/exports. Séparateur : le slash /. |
| ~ (tilde) | Raccourci vers ton dossier personnel (/Users/ton-nom). |
| Arborescence | Un dossier et tout ce qu'il contient (sous-dossiers compris). |
0. Le terminal sur Mac, et comment l'ouvrir
Le terminal, c'est comme envoyer des SMS à ton Mac : tu écris un ordre court, Entrée, il l'exécute et te répond. On part de ce que tu connais — le Finder — puis on bascule au terminal, qui montre la même chose en texte.
Étape 1 — Ouvrir le Terminal
Appuie sur Cmd + Espace (Spotlight), tape Terminal, puis Entrée.
Le-MacBook-de-eleve:~ eleve%
Étape 2 — Le pont Finder ↔ Terminal
Les deux mondes montrent le même endroit. Depuis le terminal, ouvre le Finder ici :
open .
1. Se repérer : où suis-je, et qu'y a-t-il ?
Étape 1 — Afficher le dossier courant : pwd
pwd
/Users/eleve
Étape 2 — Lister le contenu : ls
ls
Desktop Documents Downloads Movies Music Pictures
FLAG-A1
Où es-tu ?
Tape pwd. Recopie le chemin exact affiché.
Rends : FLAG-A1- suivi de ce chemin (ex. FLAG-A1-/Users/eleve).
Étape 3 — Se déplacer : cd
cd Documents
Chapitre 1 bis — Le tour complet des commandes de base
Tu connais pwd, ls, cd. Voici tout le reste pour vraiment te balader et inspecter n'importe quelle machine Unix.
Explorer à fond
| Commande | Affiche… |
|---|---|
ls -a | tout, y compris les fichiers cachés (ceux commençant par .) |
ls -l | le détail : droits, taille, date |
ls -R | le contenu et tous les sous-dossiers (récursif) |
ls -lh | tailles lisibles (Ko, Mo) |
find . -name "*.txt" | cherche des fichiers par nom, en descendant |
Lire & chercher
cat ~/mon-atelier/modeles/courrier.txt
grep "GSB" ~/mon-atelier/modeles/courrier.txt
Inspecter la machine
| Commande | Ce qu'elle te dit |
|---|---|
whoami | ton nom d'utilisateur |
hostname | le nom de la machine |
sw_vers | la version de macOS |
ipconfig getifaddr en0 | ton adresse IP (Wi-Fi) |
ps aux · top | les programmes en cours |
which ls | où est installé un programme |
clear | efface l'écran |
La clé maîtresse : le manuel man
man ls
FLAG-A4
Compter avec un tuyau
Combien d'applications sur ton Mac ? Tape :
ls -1 /Applications | grep -c ".app"
ls -1 liste une par ligne · grep -c "texte" compte les lignes contenant le texte. Rends FLAG-A4- suivi du nombre affiché (il dépend de ton Mac).
FLAG-D3
Deviens autonome avec le manuel
Avec man ls, trouve l'option qui affiche les fichiers cachés. (Cherche le mot « hidden » avec /hidden puis Entrée.)
Rends FLAG-D3- suivi de l'option (elle commence par -).
2. Créer l'arborescence de travail (mkdir)
On fabrique notre chantier ~/mon-atelier et ses trois tiroirs. mkdir = make directory.
Étape 1 — Se placer à la maison, créer le chantier
cd ~
mkdir mon-atelier
cd mon-atelier
mkdir comptes-rendus exports modeles
ls
comptes-rendus exports modeles
Étape 2 — Fabriquer des fichiers de test
echo "Modele de courrier GSB" > modeles/courrier.txt
echo "Modele de note de frais" > modeles/notes-frais.txt
echo "Modele de compte-rendu" > modeles/cr-visite.txt
FLAG-B1
Ton chantier est prêt
Recrée cette arborescence, place-toi dans ~/mon-atelier et tape ls -1 | wc -l (compte les lignes = nb d'éléments).
Rends FLAG-B1- suivi du nombre affiché (indice : 3 dossiers).
3. Copier un fichier (cp)
cp (copy), c'est la photocopieuse : un original, une destination, un double. Syntaxe : cp <source> <destination>.
Étape 1 — Copier un modèle
Place-toi dans le chantier (cd ~/mon-atelier) puis :
cp modeles/courrier.txt exports
Étape 2 — Copier en renommant, et tout copier d'un coup
cp modeles/courrier.txt exports/courrier-2026.txt
cp modeles/*.txt exports
FLAG-A2
Combien de copies ?
Copie tous les .txt de modeles vers exports, puis compte : ls exports/*.txt | wc -l.
Rends FLAG-A2- suivi du nombre affiché.
Chapitre 3 bis — Déplacer, renommer, supprimer
Trois gestes du quotidien : déplacer (mv), renommer (mv aussi), supprimer (rm).
Déplacer & renommer : mv
mv exports/courrier.txt comptes-rendus
mv comptes-rendus/courrier.txt comptes-rendus/courrier-officiel.txt
Supprimer : rm
rm exports/courrier-2026.txt
rm -r un-dossier
FLAG-B6
Range comme un pro
Dans exports : renomme notes-frais.txt en frais-2026.txt (mv), puis ls exports.
Rends FLAG-B6- suivi du nouveau nom exact.
4. Copier une arborescence entière (cp -R)
cp tout seul ne copie que des fichiers. Pour copier un dossier avec toute sa descendance, on ajoute -R (récursif).
Étape 1 — Copier tout le chantier
Depuis ~/mon-atelier :
cp -R . ~/mon-copie
FLAG-C1
Répare la commande cassée
Un collègue voulait copier le chantier mais a tapé (ça ne copie pas les sous-dossiers) :
cp . ~/mon-livraison
- Explique en une phrase pourquoi c'est incomplet. 2) Corrige, lance, puis
ls -R ~/mon-livraison | wc -l. RendsFLAG-C1-+ le nombre.
5. La sauvegarde « pro » : rsync
cp -R marche, mais pour une vraie sauvegarde on utilise rsync : il ne recopie que ce qui a changé (rapide), sait faire un miroir exact, et affiche un rapport. Il est installé d'origine sur macOS.
Étape 1 — Cloner le chantier
rsync -av ~/mon-atelier/ ~/ma-sauvegarde/
sending incremental file list
comptes-rendus/
exports/courrier.txt
modeles/courrier.txt
...
sent 1,234 bytes received 456 bytes ...
Le miroir : --delete
rsync -av --delete ~/mon-atelier/ ~/ma-sauvegarde/
FLAG-B2
Ta première vraie sauvegarde
Fais une sauvegarde et garde le rapport : rsync -av --stats ~/mon-atelier/ ~/ma-sauvegarde/ > ~/mon-atelier/rapport.txt. Ouvre-le : cat ~/mon-atelier/rapport.txt.
Rends FLAG-B2- suivi du nombre de fichiers (ligne « Number of regular files transferred » ou « files transferred »).
6. Le shell, tes alias, et les autres systèmes
Tu travailles dans zsh. Deux astuces de confort, puis un pont vers les autres mondes.
Se créer des raccourcis : les alias
alias ll="ls -lah"
Le même geste partout : Mac ↔ Windows ↔ Linux
Les concepts sont universels. Ce tableau te servira toute ta carrière :
| Faire… | Mac / Linux | Windows (cmd) |
|---|---|---|
| Où suis-je | pwd | cd |
| Lister | ls | dir |
| Copier | cp / cp -R | copy / xcopy /E |
| Déplacer / renommer | mv | move / ren |
| Supprimer | rm / rm -r | del / rmdir /s |
| Afficher un fichier | cat | type |
| Sauvegarde miroir | rsync -a --delete | robocopy /MIR |
| L'aide | man | /? |
FLAG-D1
Investigation manuel
Tu veux que cp te demande avant d'écraser un fichier. Avec man cp, trouve l'option.
Rends FLAG-D1- suivi de l'option (elle commence par -).
Partie 2 — Automatiser : les scripts .sh
Jusqu'ici tu tapais tes commandes une par une. Une sauvegarde, tu la referas tous les jours : mettons-la dans un script (un .sh) qu'on lance d'un coup. C'est le premier pas vers l'automatisation.
Les notions de la Partie 2
| Notion | Le mot-clé | À quoi ça sert |
|---|---|---|
| Écrire & lancer un script | #!/bin/bash, chmod +x | Enchaîner des commandes automatiquement |
| Mémoriser une valeur | VAR=…, $VAR | Garder un texte ou un nombre |
| Poser une question | read | Lire ce que l'utilisateur tape |
| Décider | if … then … fi | Agir selon une condition |
| Répéter | for | Traiter chaque fichier d'un dossier |
| Répéter sans fin | while true | Comprendre la boucle infinie — et l'arrêter |
7. Ton premier script .sh
Un script est une recette : une liste d'ordres exécutés dans l'ordre. Sur Mac, on l'écrit dans un fichier .sh.
Étape 1 — Créer le fichier avec nano
Dans le terminal, ouvre l'éditeur intégré nano :
cd ~/mon-atelier
nano bonjour.sh
Contenu à taper :
#!/bin/bash
echo "Bonjour, ici le script GSB !"
echo "Je vais t'aider a sauvegarder."
Étape 2 — Le rendre exécutable, puis le lancer
chmod +x bonjour.sh
./bonjour.sh
Bonjour, ici le script GSB !
Je vais t'aider a sauvegarder.
FLAG-B3
Ton script d'accueil
Écris mon-premier.sh qui affiche ton prénom + la phrase « Atelier terminal — Mac », avec un commentaire #. Rends-le exécutable et lance-le.
Rends FLAG-B3-OK + colle le contenu de ton fichier.
8. Les variables et les questions
Une variable est une boîte étiquetée. On la crée avec =, on lit son contenu avec $.
Étape 1 — Créer et utiliser une variable
entreprise="GSB"
echo "Bienvenue chez $entreprise !"
Étape 2 — Poser une question : read
read -p "Comment tu t'appelles ? " prenom
echo "Salut $prenom, on y va !"
Étape 3 — Calculer : $(( … ))
read -p "Ton annee de naissance ? " annee
age=$(( 2026 - annee ))
echo "Tu as environ $age ans."
FLAG-A3
Calcul automatique
Écris un script qui fait total=$(( 12 * 8 + 4 )) puis l'affiche.
Lance-le, rends FLAG-A3- suivi du nombre affiché.
9. Décider : les conditions (if)
Un script utile s'adapte : « si le dossier existe, ne le recrée pas ; sinon, crée-le. »
Étape 1 — Tester si un dossier existe
if [ -d ~/ma-sauvegarde ]; then
echo "Le dossier existe deja."
else
echo "Je le cree."
mkdir ~/ma-sauvegarde
fi
Étape 2 — Comparer des valeurs
read -p "Tape 1 pour sauvegarder : " choix
if [ "$choix" = "1" ]; then
echo "On lance la sauvegarde."
else
echo "Choix ignore."
fi
FLAG-C2
Répare la condition
Ce script plante. Trouve les deux erreurs, corrige, lance :
read -p "Continuer ? (o/n) " rep
if [$rep = o] then
echo "On continue."
fi
Indices : des espaces manquants dans les crochets, et un point-virgule oublié avant then. Rends FLAG-C2- + le mot affiché quand tu tapes « o ».
10. Répéter utilement : la boucle for
Traiter 50 fichiers sans taper 50 lignes : la boucle for dit « pour chaque fichier, fais ceci ».
Étape 1 — Parcourir les fichiers
for f in ~/mon-atelier/modeles/*.txt; do
echo "Trouve : $f"
done
Trouve : /Users/eleve/mon-atelier/modeles/courrier.txt
Trouve : /Users/eleve/mon-atelier/modeles/notes-frais.txt
Trouve : /Users/eleve/mon-atelier/modeles/cr-visite.txt
Étape 2 — Un compteur de 1 à 5
for i in {1..5}; do
echo "Tour numero $i"
done
FLAG-B4
Compter les fichiers
Compte les .txt de ~/mon-atelier/modeles : ls ~/mon-atelier/modeles/*.txt | wc -l.
Rends FLAG-B4- suivi du nombre affiché.
11. La boucle infinie : la comprendre, l'arrêter, la reconnaître
Répéter sans jamais s'arrêter : la boucle infinie. Utile (un menu qui revient), ou dangereuse si elle est cachée dans un fichier piégé. On comprend les deux, et on garde le contrôle.
Étape 1 — Fabriquer une boucle avec while true
Dans un script boucle.sh :
#!/bin/bash
while true; do
echo "Je tourne... (Ctrl+C pour m'arreter)"
done
Étape 2 — SAVOIR L'ARRÊTER (le réflexe n°1)
Étape 3 — La bonne boucle : celle qui a une PORTE DE SORTIE
while true; do
read -p "Tape q pour quitter : " c
if [ "$c" = "q" ]; then
break
fi
echo "Tu n'as pas quitte, je recommence..."
done
Étape 4 — Volet cybersécurité : reconnaître une boucle malveillante
Certains scripts piégés cachent une boucle qui relance des processus sans fin pour saturer la machine — un déni de service local (fork bomb). Tu dois savoir le reconnaître et t'en protéger, pas en fabriquer.
FLAG-D2
Diagnostic de sécurité
Un camarade te montre ce script trouvé sur une clé USB (ne le lance pas, lis-le) :
#!/bin/bash
while true; do
open -a Calculator
done
Réponds : (1) quelle ligne crée la boucle et pourquoi c'est dangereux ? (2) deux façons d'arrêter la machine.
Rends FLAG-D2- suivi des deux mots qui créent la boucle (séparés par un espace).
12. Projet final : sauvegarde.sh interactif
On assemble tout : variables, questions, conditions, boucle-menu maîtrisée, rsync et journal. Un vrai outil que tu utiliserais tous les jours.
Le script complet
Crée sauvegarde.sh dans ~/mon-atelier :
#!/bin/bash
# === Outil de sauvegarde ===
source=~/mon-atelier
backup=~/ma-sauvegarde
journal=~/mon-atelier/rapport.txt
while true; do
clear
echo "=================================="
echo " SAUVEGARDE"
echo "=================================="
echo " 1. Lancer la sauvegarde"
echo " 2. Voir le dernier rapport"
echo " 3. Quitter"
echo
read -p "Ton choix (1/2/3) : " choix
if [ "$choix" = "1" ]; then
echo "Sauvegarde en cours..."
rsync -av "$source/" "$backup/" > "$journal"
echo "Termine le $(date)."
read -p "Entree pour continuer..."
elif [ "$choix" = "2" ]; then
if [ -f "$journal" ]; then
cat "$journal"
else
echo "Aucun rapport : lance d'abord une sauvegarde."
fi
read -p "Entree pour continuer..."
elif [ "$choix" = "3" ]; then
echo "A bientot !"
break
else
echo "Choix invalide."
read -p "Entree pour continuer..."
fi
done
Comment ça marche — les blocs clés
| Bloc | Ce qu'il fait |
|---|---|
source= / backup= / journal= | Range les 3 chemins dans des variables — un seul endroit à modifier. |
while true … done | La boucle-menu MAÎTRISÉE : revient au menu après chaque action ; le choix 3 (break) est la porte de sortie. |
clear | Écran propre à chaque tour. |
if … elif … else … fi | Aiguille vers le bon bloc selon le choix. |
rsync -av … > "$journal" | La sauvegarde robuste, avec journal. |
if [ -f "$journal" ] | N'affiche le rapport que s'il existe. |
FLAG-B5
Ton outil de sauvegarde
Fais tourner sauvegarde.sh de bout en bout : sauvegarde réussie, affichage du rapport, sortie propre par l'option 3.
Rends FLAG-B5-OK + colle ton script (ou une capture du menu).
Aide-mémoire — toutes les commandes (Mac)
Ton antisèche. (Rappel : man commande donne l'aide de n'importe laquelle.)
Se repérer & naviguer
pwd | où suis-je ? |
cd nom / cd .. | entrer / remonter |
cd ~ | aller à la maison |
open . | ouvrir le Finder ici |
Explorer & lire
ls / ls -a / ls -R | lister / cachés / récursif |
cat / less | afficher un fichier |
grep / find | chercher texte / fichiers |
which | localiser un programme |
Manipuler des fichiers
mkdir | créer un dossier |
cp / cp -R | copier fichier / arborescence |
rsync -a | sauvegarde robuste |
mv | déplacer / renommer |
rm / rm -r | supprimer fichier / dossier |
Machine & scripts
whoami · hostname · sw_vers | qui / machine / OS |
ps · killall | voir / tuer un programme |
#!/bin/bash · chmod +x | en-tête / rendre exécutable |
VAR= · read · $(( )) | variable / saisie / calcul |
if…fi · for · while | décider / répéter / boucler |
On fait le point
Mini-quiz — vérifie-toi (corrigé dessous)
Exercice Réussi À revoir
- Quelle commande affiche le dossier où tu te trouves ?
- Comment copier un dossier ET ses sous-dossiers ?
- Pourquoi met-on
chmod +xavant de lancer un script ? - Quelle est LA différence entre une boucle
while truemaîtrisée et une dangereuse ?
Voir le corrigéMasquer le corrigé de l'exercice
pwd. — 2)cp -R source dest(oursync -a). — 3) Pour donner au fichier le droit d'exécution (sinon « permission denied »). — 4) La porte de sortie (breaksous condition) ; l'infinie n'en a aucune.
Tu avais trouvé ?
Checklist — « Tu es bloqué ? »
Glossaire
| zsh / bash | Les shells : le programme qui lit tes commandes. |
| ~ | Ton dossier personnel (/Users/toi). |
| chemin absolu / relatif | Depuis / (absolu) ou depuis là où tu es (relatif). |
| shebang | La 1re ligne #!/bin/bash d'un script. |
| chmod +x | Rendre un fichier exécutable. |
joker * | « n'importe quoi », ex. *.txt. |
tuyau | | Brancher la sortie d'une commande dans une autre. |
Défis bonus — pour les rapides
Tu as fini avant les autres ? Aucune correction ici : tu cherches, tu testes, tu notes ta démarche.
Défi E1
Ta sauvegarde en double-clic
Rends sauvegarde.sh lançable depuis le Finder : cherche comment (Finder → clic droit → « Ouvrir avec » → Terminal, ou une app Automator). Livrable : ta méthode + une phrase sur ce qui change par rapport à ./sauvegarde.sh.
Défi E2
Le miroir qui nettoie
Crée un fichier bidon vieux.txt dans ~/ma-sauvegarde (absent de la source). Lance rsync -av --delete ~/mon-atelier/ ~/ma-sauvegarde/. Que devient vieux.txt ? Livrable : ton observation + le danger d'inverser source/destination.
Défi E3
Sauvegarde datée (investigation)
On veut un dossier de sauvegarde nommé avec la date, ex. ma-sauvegarde-2026-09-02. Cherche la commande date et son format : date +%Y-%m-%d. Livrable : la ligne qui crée ~/ma-sauvegarde-$(date +%Y-%m-%d).
Défi E4
Enrichis ton menu
Ajoute à sauvegarde.sh une 4ᵉ option « Compter les fichiers » qui réutilise ls | wc -l. Livrable : le nouveau bloc elif [ "$choix" = "4" ].
Défi E5
Reprendre le contrôle (défense)
Lance ta boucle.sh (le compteur sans fin) dans une fenêtre, puis, depuis une AUTRE fenêtre, arrête-la en ligne de commande. Cherche ps (trouver le PID) puis kill, ou killall. Livrable : la commande exacte + ton observation.
Compétences mobilisées (référentiel BTS SIO)
| Bloc | Compétence | Ce qui est travaillé ici |
|---|---|---|
| Bloc 3 · Cybersécurité des services informatiques | C3.4 — Garantir la disponibilité, l'intégrité et la confidentialité des services informatiques et des données | → Recenser les conséquences d'une perte de DIC (pourquoi sauvegarder) → Organiser la collecte et la conservation des preuves numériques (sauvegarde journalisée rsync, notion de miroir) |
| Bloc 3 · Cybersécurité des services informatiques | C3.3 — Sécuriser les équipements et les usages des utilisateurs | → Informer les utilisateurs sur les risques (reconnaître un script piégé / une boucle malveillante) → Identifier les menaces et mettre en œuvre les défenses (ne pas exécuter l'inconnu, Moniteur d'activité) |
| Bloc 1 · Support et mise à disposition de services informatiques | C1.1 — Gérer le patrimoine informatique | → Maintenir à jour la documentation technique (organiser une arborescence de travail claire, la reproduire) |