Interface en Ligne de Commande Linux (CLI)
La CLI (Command Line Interface) est l'outil principal de l'administrateur Linux. Sur un serveur, il n'y a généralement pas d'interface graphique — tout passe par le terminal.
GUI vs CLI
| GUI | CLI | |
|---|---|---|
| Interface | Fenêtres, boutons, icônes | Texte uniquement |
| Utilisation serveur | Rare / inexistante | Standard |
| Automatisation | Difficile | Facile (scripts) |
| Performance | Consomme plus de ressources | Légère |
| Précision | Limitée par l'interface | Totale |
Terminal = fenêtre graphique qui donne accès à la CLI. Shell = programme qui interprète et exécute les commandes (Bash, sh, zsh...).
Anatomie du prompt
username@hostname:~$
│ │ │ │
│ │ │ └─ $ = utilisateur normal | # = root
│ │ └─── ~ = répertoire courant (home)
│ └─────────── nom de la machine
└─────────────────── nom de l'utilisateur connecté
Commandes de navigation
pwd # Afficher le répertoire courant (Print Working Directory)
ls # Lister les fichiers du répertoire courant
ls -l # Format long (permissions, taille, date)
ls -a # Afficher fichiers cachés (dotfiles)
ls -la # Long format + fichiers cachés
ls -R # Récursif (sous-dossiers inclus)
cd /chemin # Changer de répertoire (absolu)
cd dossier # Changer de répertoire (relatif)
cd .. # Remonter d'un niveau
cd ~ # Aller au répertoire home
cd - # Revenir au répertoire précédent
Commandes de gestion de fichiers
# Créer
mkdir mon-dossier # Créer un répertoire
mkdir -p a/b/c # Créer l'arborescence complète
touch fichier.txt # Créer un fichier vide (ou mettre à jour sa date)
# Lire
cat fichier.txt # Afficher le contenu d'un fichier
less fichier.txt # Afficher page par page (navigation ↑↓, q pour quitter)
head -n 20 fichier.txt # Afficher les 20 premières lignes
tail -n 20 fichier.txt # Afficher les 20 dernières lignes
tail -f fichier.log # Suivre un fichier en temps réel (logs)
# Copier / Déplacer / Supprimer
cp source destination # Copier un fichier
cp -r dossier/ dest/ # Copier un dossier (récursif)
mv source destination # Déplacer ou renommer
rm fichier.txt # Supprimer un fichier
rm -r dossier/ # Supprimer un dossier (récursif)
rm -rf dossier/ # Forcer la suppression sans confirmation
# Chercher
find . -name "*.txt" # Trouver des fichiers par nom
grep "motif" fichier.txt # Chercher un motif dans un fichier
grep -r "motif" dossier/ # Chercher récursivement
Commandes système
uname -a # Informations système (kernel, architecture, hostname)
whoami # Nom de l'utilisateur courant
id # UID, GID et groupes de l'utilisateur courant
hostname # Nom de la machine
date # Date et heure système
uptime # Depuis combien de temps le système tourne
df -h # Espace disque disponible (human readable)
free -h # Mémoire RAM utilisée/disponible
top # Processus en cours (interactif, q pour quitter)
ps aux # Liste des processus en cours
kill <PID> # Terminer un processus
history # Historique des commandes
clear # Effacer l'écran du terminal
Commandes utilisateurs (avec sudo)
sudo commande # Exécuter une commande en tant que root
sudo su # Passer en mode root (shell root)
sudo adduser alice # Créer un nouvel utilisateur
sudo deluser alice # Supprimer un utilisateur
sudo addgroup devops # Créer un groupe
sudo usermod -aG devops alice # Ajouter alice au groupe devops
sudo = "Substitute User DO" — exécute une commande avec les privilèges root sans se connecter directement comme root.
Pipes et redirections
Pipe |
Le pipe envoie la sortie d'une commande comme entrée de la suivante.
cat /var/log/syslog | less # Lire le syslog page par page
history | grep sudo # Filtrer l'historique sur "sudo"
ls /usr/bin | grep java # Chercher java dans les binaires
history | grep sudo | less # Enchaîner plusieurs pipes
Redirection > et >>
commande > fichier.txt # Écrire la sortie dans un fichier (écrase)
commande >> fichier.txt # Ajouter la sortie à la fin d'un fichier
history | grep rm > rm-log.txt # Sauvegarder les commandes rm dans un fichier
Flux standards
| Flux | Numéro | Description |
|---|---|---|
| STDIN | 0 | Entrée standard (clavier) |
| STDOUT | 1 | Sortie standard (écran) |
| STDERR | 2 | Sortie d'erreur (écran, en rouge) |
commande 2> erreurs.txt # Rediriger les erreurs vers un fichier
commande > out.txt 2>&1 # Rediriger STDOUT et STDERR vers le même fichier
Commande grep — Recherche de motifs
grep "erreur" fichier.log # Lignes contenant "erreur"
grep -i "erreur" fichier.log # Insensible à la casse
grep -n "erreur" fichier.log # Afficher les numéros de ligne
grep -r "TODO" ./src/ # Recherche récursive dans dossier
grep -v "DEBUG" fichier.log # Exclure les lignes contenant "DEBUG"
cat fichier.log | grep "ERROR" # Combiner avec cat
Raccourcis utiles
Ctrl + C # Interrompre la commande en cours
Ctrl + Z # Mettre en pause (foreground → background)
Ctrl + L # Effacer l'écran (équivalent à clear)
Ctrl + A # Aller au début de la ligne
Ctrl + E # Aller à la fin de la ligne
Tab # Auto-complétion des commandes et chemins
↑ / ↓ # Naviguer dans l'historique des commandes
!! # Répéter la dernière commande
!sudo # Répéter la dernière commande commençant par "sudo"
À retenir
- CLI = outil indispensable sur les serveurs Linux (pas de GUI)
pwd= où je suis ;ls= ce qu'il y a ;cd= je me déplacecat= afficher ;less= afficher page par page ;grep= filtrerrm -rf= suppression irréversible — à utiliser avec précaution !- Pipe
|= chaîner des commandes (sortie → entrée suivante)>= redirection (écrase) ;>>= redirection (ajoute)sudo= exécuter en tant que root sans se connecter comme root- Tab = auto-complétion, toujours utiliser pour éviter les fautes de frappe