Section 13.1.1 : Terminal et ligne de commande
🎯 Objectif pédagogique
Maîtriser le terminal comme outil principal de développement. À la fin de cette section, vous naviguerez dans votre système de fichiers, manipulerez des fichiers et exécuterez des commandes complexes avec confiance.
Le terminal : votre cockpit de développeur
Tout développeur professionnel passe une partie significative de son temps dans le terminal. C'est l'interface textuelle qui vous donne un contrôle total sur votre machine, vos fichiers, vos programmes et vos serveurs. Si l'interface graphique est le volant d'une voiture, le terminal est le cockpit d'un avion : plus complexe, mais infiniment plus puissant.
Le terminal (aussi appelé shell, console ou CLI — Command Line Interface) est un interpréteur qui exécute des commandes textuelles. Sur macOS et Linux, vous utiliserez principalement Bash ou Zsh. Sur Windows, PowerShell ou le Windows Terminal avec WSL (Windows Subsystem for Linux).
Anatomie d'une commande
Une commande suit toujours la même structure :
commande [options] [arguments]
# Exemples :
ls -la Documents/
# │ │ └── argument (le dossier cible)
# │ └── options (-l pour détaillé, -a pour fichiers cachés)
# └── commande (lister les fichiers)
Navigation dans le système de fichiers
Le système de fichiers est organisé en arborescence. Votre position actuelle est le répertoire courant (working directory). Toute commande s'exécute relativement à cette position.
# Où suis-je ?
pwd # Print Working Directory
# Que contient ce dossier ?
ls # Liste simple
ls -l # Détaillé (permissions, taille, date)
ls -la # Avec fichiers cachés (.gitignore, .env)
ls -lah # Avec tailles lisibles (Ko, Mo, Go)
# Se déplacer
cd Documents # Entrer dans Documents
cd .. # Remonter d'un niveau
cd ../.. # Remonter de deux niveaux
cd ~ # Aller au répertoire home
cd - # Retourner au dernier répertoire
Astuce productivité
Utilisez la touche Tab pour l'autocomplétion. Tapez les premières lettres d'un nom de fichier ou dossier, puis appuyez sur Tab. Le terminal complète automatiquement. En cas d'ambiguïté, appuyez deux fois sur Tab pour voir les options.
Manipulation de fichiers et dossiers
# Créer
touch index.html # Créer un fichier vide
mkdir mon-projet # Créer un dossier
mkdir -p src/components/ui # Créer une arborescence complète
# Copier
cp fichier.txt copie.txt # Copier un fichier
cp -r dossier/ backup/ # Copier un dossier récursivement
# Déplacer / Renommer
mv ancien.txt nouveau.txt # Renommer
mv fichier.txt Documents/ # Déplacer
# Supprimer (ATTENTION : pas de corbeille !)
rm fichier.txt # Supprimer un fichier
rm -r dossier/ # Supprimer un dossier
rm -ri dossier/ # Supprimer avec confirmation
# Lire le contenu
cat fichier.txt # Afficher tout le contenu
head -20 fichier.txt # Les 20 premières lignes
tail -20 fichier.txt # Les 20 dernières lignes
less fichier.txt # Navigation pagée (q pour quitter)
Recherche et filtrage
# Chercher du texte dans des fichiers
grep 'def initialize' app/models/*.rb # Chercher dans les fichiers Ruby
grep -r 'TODO' src/ # Recherche récursive
grep -rn 'function' --include='*.js' # Avec numéros de ligne
# Trouver des fichiers
find . -name '*.rb' # Tous les fichiers .rb
find . -type d -name 'node_modules' # Trouver des dossiers
# Compter
wc -l fichier.txt # Nombre de lignes
wc -w fichier.txt # Nombre de mots
Le pipe : la puissance de la composition
Le pipe (|) connecte la sortie d'une commande à l'entrée de la suivante, permettant de créer des pipelines de traitement de données :
# Compter les erreurs dans un log
cat server.log | grep 'ERROR' | wc -l
# Extraire les emails uniques d'un CSV
cut -d',' -f3 contacts.csv | sort | uniq | grep '@'
# Top 5 des plus gros fichiers
find . -type f -exec ls -la {} \; | sort -k5 -rn | head -5
Variables d'environnement
Les variables d'environnement sont des valeurs globales accessibles par tous les programmes :
echo $HOME # Votre répertoire home
echo $PATH # Dossiers où chercher les commandes
echo $USER # Votre nom d'utilisateur
# Définir une variable
export API_KEY='sk-abc123'
# Persistance dans .zshrc
echo 'export API_KEY="sk-abc123"' >> ~/.zshrc
source ~/.zshrc
Exercice pratique : créer un projet web
# 1. Créer la structure
mkdir -p mon-site/css mon-site/js mon-site/images
touch mon-site/index.html mon-site/css/style.css mon-site/js/app.js
# 2. Vérifier
find mon-site -type f
# 3. Archiver
tar -czf mon-site.tar.gz mon-site/
ls -lh mon-site.tar.gz
Quelle commande recherche récursivement le mot ERROR dans les fichiers .log ?
Que fait la commande mkdir -p src/components/ui ?
Apprendre l’IA, du premier prompt aux agents