Section 11.1.3 : Le terminal — Votre super-pouvoir
🎯 Objectif pédagogique
Maîtriser le terminal (ligne de commande) pour naviguer dans le système de fichiers, créer et manipuler des fichiers, et exécuter des programmes. Vous serez capable d'effectuer toutes les opérations courantes sans interface graphique — un skill fondamental pour tout développeur.
Pourquoi le terminal change tout
Marc utilisait l'Explorateur de fichiers Windows pour tout : créer des dossiers, copier des fichiers, organiser ses documents. Ça fonctionnait — pour un utilisateur bureautique. Mais pour un développeur, l'Explorateur de fichiers est comme utiliser une calculatrice quand on a besoin d'Excel : c'est techniquement possible, mais terriblement inefficace.
Le terminal permet de :
- →Créer 100 fichiers en une commande (au lieu de 100 clics)
- →Automatiser des tâches répétitives (scripts)
- →Interagir avec Git, npm, pip — les outils du développeur
- →Contrôler des serveurs distants (SSH)
- →Lancer des builds, des tests, des déploiements
Installer et configurer son terminal
Sur Windows
- →Windows Terminal (recommandé) : préinstallé sur Windows 11.
- →Git Bash : installé avec Git (Section 11.1.5). Émule un terminal Linux sous Windows.
- →PowerShell : plus puissant que CMD, mais syntaxe différente de Linux/Mac.
Conseil de Marc : choisissez Git Bash
Git Bash utilise la même syntaxe que Linux et macOS. Si vous apprenez les commandes Git Bash, elles fonctionneront partout — sur un Mac, sur un serveur Linux, sur Docker. PowerShell a une syntaxe différente qui ne fonctionne que sous Windows. Pour un débutant, Git Bash est le meilleur investissement.
Sur macOS
Le Terminal est préinstallé (Applications → Utilitaires → Terminal). Alternative recommandée : iTerm2 (gratuit, plus de fonctionnalités).
Sur Linux
Le terminal est le citoyen de première classe. Raccourci universel : Ctrl+Alt+T.
Naviguer dans le système de fichiers
Le système de fichiers est un arbre avec une racine (/ sur Linux/Mac, C:\ sur Windows) :
/ (racine)
├── home/ (dossiers utilisateurs)
│ └── marc/ (dossier de Marc)
│ ├── Documents/
│ ├── Desktop/
│ └── projets/ (ses projets de code)
│ ├── portfolio/
│ └── job-tracker/
├── usr/ (programmes installés)
└── etc/ (configuration système)
Commandes de navigation :
# Savoir où on est
pwd # Print Working Directory → /home/marc
# Se déplacer
cd projets # Entrer dans le dossier "projets"
cd portfolio # Entrer dans "portfolio"
cd .. # Remonter d'un niveau
cd ../.. # Remonter de deux niveaux
cd ~ # Retourner au home (/home/marc)
cd / # Aller à la racine
# Lister le contenu
ls # Liste simple
ls -la # Liste détaillée (permissions, taille, date)
ls -lh # Liste avec tailles lisibles (Ko, Mo, Go)
Créer, copier, déplacer, supprimer
# Créer un dossier
mkdir mon-projet # Crée le dossier "mon-projet"
mkdir -p src/components/common # Crée toute l'arborescence d'un coup
# Créer un fichier vide
touch index.html # Crée "index.html" (0 octets)
touch style.css script.js # Crée plusieurs fichiers d'un coup
# Copier
cp fichier.txt copie.txt # Copie un fichier
cp -r dossier/ copie-dossier/ # Copie un dossier (-r = récursif)
# Déplacer / Renommer
mv ancien.txt nouveau.txt # Renommer un fichier
mv fichier.txt dossier/ # Déplacer vers un dossier
# Supprimer (⚠️ IRRÉVERSIBLE - pas de corbeille !)
rm fichier.txt # Supprimer un fichier
rm -r dossier/ # Supprimer un dossier et son contenu
rm -ri dossier/ # Supprimer avec confirmation
rm est irréversible !
Contrairement à l'Explorateur de fichiers, rm ne met pas les fichiers dans la corbeille — ils sont supprimés définitivement. Soyez prudent avec rm -rf (suppression récursive sans confirmation). Marc a perdu un dossier entier la première semaine. Depuis, il utilise rm -ri et fait des commits Git réguliers.
Lire et éditer des fichiers
# Afficher le contenu
cat fichier.txt # Affiche tout le contenu
head -20 fichier.txt # Les 20 premières lignes
tail -10 fichier.txt # Les 10 dernières lignes
# Chercher dans un fichier
grep "erreur" log.txt # Lignes contenant "erreur"
grep -r "TODO" src/ # Cherche dans tout le dossier src/
grep -n "function" script.js # Affiche les numéros de ligne
# Compter
wc -l fichier.txt # Nombre de lignes
wc -w fichier.txt # Nombre de mots
# Éditer
nano fichier.txt # Éditeur simple (Ctrl+O sauver, Ctrl+X quitter)
code fichier.txt # Ouvrir dans VS Code
Combiner des commandes avec les pipes
Le pipe (|) envoie la sortie d'une commande vers l'entrée de la suivante :
# Les 5 plus gros fichiers du dossier
ls -lhS | head -5
# Compter les fichiers JavaScript dans un projet
find . -name "*.js" | wc -l
# Compter les erreurs dans les logs
cat server.log | grep "error" | wc -l
# Processus triés par utilisation mémoire
ps aux | sort -k 4 -rn | head -10
Marc compare les pipes aux formules Excel imbriquées : "C'est comme =SOMME(SI(A1:A100>0, A1:A100, 0)) — chaque étape transforme les données pour la suivante."
Raccourcis essentiels du terminal
| Raccourci | Action |
|---|---|
Tab | Autocomplétion (le plus important !) |
↑ / ↓ | Naviguer dans l'historique |
Ctrl+C | Arrêter une commande en cours |
Ctrl+L | Effacer l'écran |
Ctrl+R | Recherche dans l'historique |
Ctrl+A / Ctrl+E | Début / fin de ligne |
!! | Répéter la dernière commande |
🏋️ Exercice pratique (20 minutes)
Objectif : Créer l'arborescence d'un projet web depuis le terminal.
# 1. Créez un dossier projet
mkdir -p ~/projets/mon-premier-site
# 2. Naviguez dedans
cd ~/projets/mon-premier-site
# 3. Créez la structure
mkdir -p src/\{css,js,images\} public
# 4. Créez les fichiers
touch index.html src/css/style.css src/js/app.js README.md
# 5. Vérifiez votre structure
ls -R
# 6. Écrivez dans le README
echo "# Mon Premier Site Web" > README.md
echo "Créé par Marc." >> README.md
cat README.md
# 7. Comptez vos fichiers
find . -type f | wc -l
Marc : "En 2 minutes au terminal, j'ai créé une structure qui m'aurait pris 5 minutes à la souris. Et surtout, je peux reproduire ça en une seule commande pour chaque nouveau projet."
Quelle commande permet de remonter de deux niveaux dans l'arborescence ?
Marc veut chercher 'TODO' dans tous les fichiers JavaScript de son projet. Quelle commande ?
Que fait la commande : ls -lhS | head -5 ?