Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

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

NotionLa commandeÀ quoi ça sert
Ouvrir le terminalTerminal.appDonner des ordres écrits au Mac
Savoir où on estpwdAfficher le dossier courant
Lister le contenulsVoir les fichiers et dossiers
Se déplacercdEntrer dans un dossier / remonter
Créer un dossiermkdirFabriquer l'arborescence de travail
Copiercp / cp -RDupliquer un fichier / une arborescence
Sauvegarder « pro »rsyncCloner un dossier de façon robuste
Automatiserscripts .shEnchaîner des commandes en un fichier

Le vocabulaire de départ

MotÇa veut dire quoi
TerminalL'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).
ArborescenceUn 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.

Ce que tu dois voir
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 :

bash
open .

1. Se repérer : où suis-je, et qu'y a-t-il ?

Étape 1 — Afficher le dossier courant : pwd

bash
pwd
Ce que tu dois voir
/Users/eleve

Étape 2 — Lister le contenu : ls

bash
ls
Ce que tu dois voir
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).

0 sur 20 dans cette étape

Étape 3 — Se déplacer : cd

bash
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

CommandeAffiche…
ls -atout, y compris les fichiers cachés (ceux commençant par .)
ls -lle détail : droits, taille, date
ls -Rle contenu et tous les sous-dossiers (récursif)
ls -lhtailles lisibles (Ko, Mo)
find . -name "*.txt"cherche des fichiers par nom, en descendant

Lire & chercher

bash
cat ~/mon-atelier/modeles/courrier.txt
grep "GSB" ~/mon-atelier/modeles/courrier.txt

Inspecter la machine

CommandeCe qu'elle te dit
whoamiton nom d'utilisateur
hostnamele nom de la machine
sw_versla version de macOS
ipconfig getifaddr en0ton adresse IP (Wi-Fi)
ps aux · toples programmes en cours
which lsoù est installé un programme
clearefface l'écran

La clé maîtresse : le manuel man

bash
man ls

FLAG-A4

Compter avec un tuyau

Combien d'applications sur ton Mac ? Tape :

bash
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).

0 sur 20 dans cette étape

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 -).

0 sur 20 dans cette étape

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

bash
cd ~
mkdir mon-atelier
cd mon-atelier
mkdir comptes-rendus exports modeles
bash
ls
Ce que tu dois voir
comptes-rendus  exports  modeles

Étape 2 — Fabriquer des fichiers de test

bash
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).

0 sur 20 dans cette étape

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 :

bash
cp modeles/courrier.txt exports

Étape 2 — Copier en renommant, et tout copier d'un coup

bash
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é.

0 sur 20 dans cette étape

Chapitre 3 bis — Déplacer, renommer, supprimer

Trois gestes du quotidien : déplacer (mv), renommer (mv aussi), supprimer (rm).

Déplacer & renommer : mv

bash
mv exports/courrier.txt comptes-rendus
mv comptes-rendus/courrier.txt comptes-rendus/courrier-officiel.txt

Supprimer : rm

bash
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.

0 sur 20 dans cette étape

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).

Schéma : cp vs cp -R vs rsync — qui copie quoi ? · cp · ✔ des fichiers · ✗ pas les sous-dossiers · cp -R · ✔ dossier + sous-dossiers · arborescence entière · rsync -a · ✔ arbo + reprise + miroir · la sauvegarde « pro »

Étape 1 — Copier tout le chantier

Depuis ~/mon-atelier :

bash
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) :

bash
cp . ~/mon-livraison
  1. Explique en une phrase pourquoi c'est incomplet. 2) Corrige, lance, puis ls -R ~/mon-livraison | wc -l. Rends FLAG-C1- + le nombre.
0 sur 20 dans cette étape

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/
Ce que tu dois voir
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 »).

0 sur 20 dans cette étape

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 / LinuxWindows (cmd)
Où suis-jepwdcd
Listerlsdir
Copiercp / cp -Rcopy / xcopy /E
Déplacer / renommermvmove / ren
Supprimerrm / rm -rdel / rmdir /s
Afficher un fichiercattype
Sauvegarde miroirrsync -a --deleterobocopy /MIR
L'aideman/?

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 -).

0 sur 20 dans cette étape

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

NotionLe mot-cléÀ quoi ça sert
Écrire & lancer un script#!/bin/bash, chmod +xEnchaîner des commandes automatiquement
Mémoriser une valeurVAR=…, $VARGarder un texte ou un nombre
Poser une questionreadLire ce que l'utilisateur tape
Déciderif … then … fiAgir selon une condition
RépéterforTraiter chaque fichier d'un dossier
Répéter sans finwhile trueComprendre 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 :

bash
cd ~/mon-atelier
nano bonjour.sh

Contenu à taper :

bash
#!/bin/bash
echo "Bonjour, ici le script GSB !"
echo "Je vais t'aider a sauvegarder."

Étape 2 — Le rendre exécutable, puis le lancer

bash
chmod +x bonjour.sh
./bonjour.sh
Ce que tu dois voir
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.

0 sur 20 dans cette étape

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é.

0 sur 20 dans cette étape

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 ».

0 sur 20 dans cette étape

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
Ce que tu dois voir
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é.

0 sur 20 dans cette étape

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).

0 sur 20 dans cette étape

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

BlocCe qu'il fait
source= / backup= / journal=Range les 3 chemins dans des variables — un seul endroit à modifier.
while true … doneLa 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 … fiAiguille 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).

0 sur 20 dans cette étape

Aide-mémoire — toutes les commandes (Mac)

Ton antisèche. (Rappel : man commande donne l'aide de n'importe laquelle.)

Se repérer & naviguer

pwdoù suis-je ?
cd nom / cd ..entrer / remonter
cd ~aller à la maison
open .ouvrir le Finder ici

Explorer & lire

ls / ls -a / ls -Rlister / cachés / récursif
cat / lessafficher un fichier
grep / findchercher texte / fichiers
whichlocaliser un programme

Manipuler des fichiers

mkdircréer un dossier
cp / cp -Rcopier fichier / arborescence
rsync -asauvegarde robuste
mvdéplacer / renommer
rm / rm -rsupprimer fichier / dossier

Machine & scripts

whoami · hostname · sw_versqui / machine / OS
ps · killallvoir / tuer un programme
#!/bin/bash · chmod +xen-tête / rendre exécutable
VAR= · read · $(( ))variable / saisie / calcul
if…fi · for · whiledécider / répéter / boucler

On fait le point

Mini-quiz — vérifie-toi (corrigé dessous)

Exercice Réussi À revoir

  1. Quelle commande affiche le dossier où tu te trouves ?
  2. Comment copier un dossier ET ses sous-dossiers ?
  3. Pourquoi met-on chmod +x avant de lancer un script ?
  4. Quelle est LA différence entre une boucle while true maîtrisée et une dangereuse ?
Voir le corrigéMasquer le corrigé de l'exercice
  1. pwd. — 2) cp -R source dest (ou rsync -a). — 3) Pour donner au fichier le droit d'exécution (sinon « permission denied »). — 4) La porte de sortie (break sous condition) ; l'infinie n'en a aucune.

Tu avais trouvé ?

Checklist — « Tu es bloqué ? »

Glossaire

zsh / bashLes shells : le programme qui lit tes commandes.
~Ton dossier personnel (/Users/toi).
chemin absolu / relatifDepuis / (absolu) ou depuis là où tu es (relatif).
shebangLa 1re ligne #!/bin/bash d'un script.
chmod +xRendre 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.

0 sur 20 dans cette étape

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.

0 sur 20 dans cette étape

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).

0 sur 20 dans cette étape

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" ].

0 sur 20 dans cette étape

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.

0 sur 20 dans cette étape

Compétences mobilisées (référentiel BTS SIO)

BlocCompétenceCe qui est travaillé ici
Bloc 3 · Cybersécurité des services informatiquesC3.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 informatiquesC3.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 informatiquesC1.1 — Gérer le patrimoine informatique→ Maintenir à jour la documentation technique (organiser une arborescence de travail claire, la reproduire)

Mac terminé ?

Coche chaque livrable quand tu l'as : c'est la preuve que l'étape est acquise.

livrables
–
quiz réussi
–
de série
–
Voir toutes les étapes du TP