Architecture Event-Driven : CQRS, Event Sourcing et Message Queues
Guide complet des architectures événementielles modernes : CQRS, Event Sourcing, Kafka et RabbitMQ pour des systèmes scalables et résilients.
Le terminal est un outil indispensable pour tout développeur. Apprenez les commandes Bash essentielles pour naviguer, manipuler des fichiers, utiliser Git et automatiser vos tâches de développement.
Quand vous débutez en développement web, il peut sembler tentant d’éviter le terminal au profit d’interfaces graphiques. Mais en 2025, maîtriser la ligne de commande est devenu une compétence fondamentale pour tout développeur sérieux.
Windows propose plusieurs options :
Windows + XWSL vous donne accès à un véritable Linux sous Windows :
# Installer WSL (PowerShell en tant qu'administrateur)
wsl --install
# Après redémarrage, WSL2 avec Ubuntu est installé
# Lancez Ubuntu depuis le menu Démarrer
Le terminal est natif sur macOS :
Cmd + Espace pour ouvrir SpotlightApplications > Utilitaires > TerminalLe shell par défaut est Zsh (depuis macOS Catalina), très similaire à Bash.
Alternative recommandée : iTerm2 – Terminal amélioré avec plus de fonctionnalités.
Selon votre distribution :
Ctrl + Alt + TLe shell par défaut est généralement Bash.
Quand vous ouvrez le terminal, vous voyez quelque chose comme :
username@hostname:~/Documents$
Décomposition :
username : Votre nom d’utilisateurhostname : Nom de votre ordinateur~/Documents : Répertoire actuel (~ = dossier personnel)$ : Indique que vous êtes un utilisateur normal (pas administrateur)# : Indiquerait un utilisateur root/administrateurpwd signifie « Print Working Directory » (afficher le répertoire de travail).
pwd
# Affiche : /home/username/Documents
Utilisez cette commande quand vous êtes perdu pour savoir où vous vous trouvez dans l’arborescence.
ls signifie « list » (lister).
# Liste basique
ls
# Liste détaillée avec permissions, taille, date
ls -l
# Afficher les fichiers cachés (commencent par .)
ls -a
# Liste détaillée incluant les fichiers cachés
ls -la
# Trier par date de modification
ls -lt
# Afficher la taille en format lisible (Ko, Mo, Go)
ls -lh
Exemple de sortie de ls -lh :
drwxr-xr-x 5 user group 160B Jan 15 10:30 mon-projet
-rw-r--r-- 1 user group 2.3K Jan 14 14:22 index.html
-rw-r--r-- 1 user group 1.5K Jan 14 15:10 style.css
Lecture :
d = dossier, - = fichierrwx (read, write, execute) pour owner, group, otherscd signifie « Change Directory » (changer de répertoire).
# Aller dans un dossier
cd Documents
# Aller dans un sous-dossier
cd Documents/projets/mon-site
# Remonter d'un niveau
cd ..
# Remonter de deux niveaux
cd ../..
# Retourner au dossier personnel
cd
# ou
cd ~
# Aller directement à un chemin absolu
cd /var/www/html
# Revenir au dossier précédent
cd -
Astuce : Utilisez la touche Tab pour l’autocomplétion des noms de dossiers :
cd Doc[Tab] # Se complète en : cd Documents/
# Créer un dossier
mkdir mon-projet
# Créer plusieurs dossiers
mkdir dossier1 dossier2 dossier3
# Créer des dossiers imbriqués
mkdir -p projets/site-web/css
# -p crée les dossiers parents s'ils n'existent pas
# Créer un fichier
touch index.html
# Créer plusieurs fichiers
touch index.html style.css script.js
# Créer un fichier dans un sous-dossier
touch css/main.css
# Copier un fichier
cp source.txt destination.txt
# Copier un fichier dans un dossier
cp index.html backup/
# Copier un dossier entier (récursif)
cp -r mon-projet mon-projet-backup
# Copier plusieurs fichiers dans un dossier
cp .html backup/
# Renommer un fichier
mv ancien-nom.txt nouveau-nom.txt
# Déplacer un fichier
mv fichier.txt dossier/
# Déplacer un dossier
mv ancien-dossier nouveau-emplacement/
# Renommer un dossier
mv ancien-nom nouveau-nom
Attention : La suppression en ligne de commande est définitive (pas de corbeille) !
# Supprimer un fichier
rm fichier.txt
# Supprimer plusieurs fichiers
rm fichier1.txt fichier2.txt
# Supprimer tous les fichiers .log
rm .log
# Supprimer un dossier et tout son contenu (récursif)
rm -r dossier/
# Forcer la suppression sans confirmation
rm -rf dossier/
# ⚠️ DANGER : cette commande supprime tout sans demander confirmation !
Règle d’or : Toujours vérifier deux fois avant d’utiliser rm -rf !
# Afficher tout le contenu d'un fichier
cat index.html
# Afficher plusieurs fichiers
cat fichier1.txt fichier2.txt
# Créer un fichier avec du contenu
cat > nouveau.txt
# Tapez votre contenu
# Appuyez sur Ctrl+D pour terminer
# Ouvrir un fichier en mode lecture
less fichier.txt
# Navigation :
# Espace : page suivante
# b : page précédente
# / : rechercher
# q : quitter
# Afficher les 10 premières lignes
head fichier.txt
# Afficher les 5 premières lignes
head -n 5 fichier.txt
# Afficher les 10 dernières lignes
tail fichier.txt
# Suivre un fichier en temps réel (logs)
tail -f server.log
# Trouver tous les fichiers .html dans le dossier actuel
find . -name ".html"
# Trouver tous les dossiers nommés "nodemodules"
find . -type d -name "nodemodules"
# Trouver tous les fichiers modifiés dans les dernières 24h
find . -mtime -1
# Trouver et supprimer tous les fichiers .log
find . -name ".log" -delete
# Rechercher un mot dans un fichier
grep "fonction" script.js
# Recherche insensible à la casse
grep -i "erreur" log.txt
# Rechercher dans tous les fichiers .js
grep "console.log" .js
# Recherche récursive dans tous les sous-dossiers
grep -r "TODO" .
# Afficher le numéro de ligne
grep -n "import" index.js
clear
# ou raccourci : Ctrl+L
# Afficher les dernières commandes
history
# Rechercher dans l'historique
history | grep git
# Réexécuter la commande numéro 42
!42
# Réexécuter la dernière commande
!!
# Réexécuter la dernière commande commençant par "git"
!git
# Afficher un message
echo "Hello World"
# Afficher une variable d'environnement
echo $PATH
# Créer un fichier avec du contenu
echo "console.log('test');" > test.js
# Ajouter du contenu à un fichier existant
echo "nouvelle ligne" >> fichier.txt
# Trouver où est installé Node.js
which node
# Retourne : /usr/local/bin/node
# Vérifier si une commande existe
which python3
# Rediriger la sortie vers un fichier (écrase le fichier)
ls -la > liste.txt
# Ajouter à la fin d'un fichier
ls -la >> liste.txt
# Rediriger les erreurs
npm install 2> errors.log
# Rediriger sortie et erreurs
npm install > output.log 2>&1
Le pipe | envoie la sortie d’une commande à l’entrée de la suivante :
# Lister les fichiers et compter les lignes
ls -la | wc -l
# Rechercher "error" dans tous les .log et compter
grep "error" .log | wc -l
# Afficher les processus Node.js
ps aux | grep node
# Trouver les plus gros fichiers
du -ah | sort -rh | head -n 10
# Initialiser un projet Node.js
npm init
# ou version rapide (accepte toutes les valeurs par défaut)
npm init -y
# Installer un package
npm install express
# Installer en tant que dépendance de développement
npm install --save-dev eslint
# Installer globalement
npm install -g nodemon
# Désinstaller un package
npm uninstall package-name
# Mettre à jour les packages
npm update
# Lancer un script défini dans package.json
npm run dev
npm start
npm test
# Cloner un dépôt
git clone https://github.com/user/repo.git
# Statut du dépôt
git status
# Ajouter des fichiers
git add .
# Commit
git commit -m "Message du commit"
# Pousser vers GitHub
git push origin main
# Récupérer les modifications
git pull origin main
# Créer une branche
git checkout -b nouvelle-branche
# Voir l'historique
git log --oneline
# Vérifier la version de Node.js
node --version
# Exécuter un fichier JavaScript
node script.js
# Démarrer un serveur de développement (si configuré)
npm run dev
# Créer une nouvelle app React
npx create-react-app mon-app
# Créer une nouvelle app Next.js
npx create-next-app@latest mon-app
# Lancer un serveur HTTP simple (Python)
python3 -m http.server 8000
# Afficher une variable
echo $PATH
echo $HOME
# Définir une variable temporaire
export APIKEY="votre-clé-secrète"
# Utiliser la variable
echo $APIKEY
# Lancer une commande avec une variable
NODEENV=production npm start
Créez un fichier .env à la racine du projet :
DATABASEURL=postgresql://localhost:5432/mydb
APIKEY=abc123xyz
PORT=3000
Chargez les variables avec un package comme dotenv :
npm install dotenv
Dans votre code JavaScript :
require('dotenv').config();
console.log(process.env.APIKEY);
| Raccourci | Action |
|---|---|
Tab |
Autocomplétion des commandes et chemins |
Ctrl + C |
Interrompre la commande en cours |
Ctrl + D |
Fermer le terminal (EOF) |
Ctrl + L |
Nettoyer l’écran (équivalent de clear) |
Ctrl + A |
Aller au début de la ligne |
Ctrl + E |
Aller à la fin de la ligne |
Ctrl + U |
Supprimer tout avant le curseur |
Ctrl + K |
Supprimer tout après le curseur |
Ctrl + R |
Rechercher dans l’historique |
↑ ↓ |
Naviguer dans l’historique des commandes |
Ctrl + Z |
Mettre le processus en arrière-plan |
Les alias sont des raccourcis pour vos commandes fréquentes.
# Créer un alias
alias ll="ls -lah"
alias gs="git status"
alias gp="git push"
# Utiliser l'alias
ll # Équivaut à : ls -lah
Ajoutez vos alias dans ~/.bashrc (Linux) ou ~/.bashprofile (macOS) :
# Ouvrir le fichier de configuration
nano ~/.bashrc
# Ajouter vos alias à la fin
alias ll="ls -lah"
alias ..="cd .."
alias gs="git status"
alias gaa="git add ."
alias gc="git commit -m"
alias gp="git push"
alias dev="npm run dev"
# Sauvegarder (Ctrl+O, Entrée, Ctrl+X)
# Recharger la configuration
source ~/.bashrc
Sur macOS avec Zsh, modifiez ~/.zshrc de la même façon.
Un script Bash est un fichier contenant une série de commandes.
# Créer un fichier script
touch deploy.sh
# Éditer le fichier
nano deploy.sh
Contenu de deploy.sh :
#!/bin/bash
echo "Début du déploiement..."
# Pull les dernières modifications
git pull origin main
# Installer les dépendances
npm install
# Build du projet
npm run build
echo "Déploiement terminé !"
Rendre le script exécutable et le lancer :
# Rendre exécutable
chmod +x deploy.sh
# Exécuter le script
./deploy.sh
#!/bin/bash
PROJECTNAME="Mon Site Web"
VERSION="1.0.0"
echo "Projet : $PROJECT_NAME"
echo "Version : $VERSION"
# Demander une entrée utilisateur
read -p "Entrez votre nom : " USERNAME
echo "Bonjour, $USERNAME !"
# D'abord lister ce qui sera supprimé
ls .log
# Puis supprimer
rm .log
L’autocomplétion vous évite de taper des noms de fichiers compliqués et réduit les erreurs.
# Sauvegarder avant de modifier
cp config.json config.json.backup
#!/bin/bash
# Script de déploiement automatique
# Auteur: Votre Nom
# Date: 2025-01-15
# Usage: ./deploy.sh
echo "Démarrage..."
# Exécute la commande suivante seulement si la précédente réussit
npm install && npm run build && npm start
# Navigation
pwd # Afficher le répertoire actuel
ls -lah # Lister les fichiers détaillés
cd chemin # Changer de dossier
cd .. # Remonter d'un niveau
# Fichiers
touch fichier.txt # Créer un fichier
mkdir dossier # Créer un dossier
cp source dest # Copier
mv ancien nouveau # Déplacer/renommer
rm fichier # Supprimer
cat fichier # Afficher le contenu
# Recherche
find . -name "*.js" # Trouver des fichiers
grep "text" fichier # Rechercher dans le contenu
# Système
history # Historique des commandes
clear # Nettoyer l'écran
which commande # Localiser une commande
# Git
git status # Statut
git add . # Ajouter tous les fichiers
git commit -m "msg" # Commit
git push # Pousser
# Node.js
npm install # Installer dépendances
npm run dev # Lancer script dev
node script.js # Exécuter un fichier
Le terminal peut sembler intimidant au début, mais avec de la pratique, il deviendra votre meilleur ami. Voici comment progresser :
cd, ls, pwdman commande ou commande --helpExercice pratique pour aujourd’hui :
Le terminal est une compétence qui vous suivra tout au long de votre carrière. Plus vous l’utilisez, plus il devient naturel. Bonne exploration !
Cet article est vivant — corrections, contre-arguments et retours de production sont les bienvenus. Trois canaux, choisissez celui qui vous convient.