Guide complet des commandes Linux indispensables pour les développeurs web et administrateurs système. Maîtrisez la navigation, la gestion des fichiers et l'administration serveur.
Introduction et concepts
Linux est un système d'exploitation open source puissant et flexible. La ligne de commande (terminal ou shell) est l'outil le plus puissant pour les développeurs et administrateurs système.
Avantages de maîtriser le terminal :
- Productivité accrue (plus rapide que l'interface graphique)
- Automatisation de tâches répétitives
- Gestion complète des serveurs et permissions
- Déploiement et DevOps facilités
- Configuration fine des systèmes
Gestion des fichiers
touch — Créer ou modifier un fichier
$ touch index.html # Créer un fichier vide
$ touch file.txt # Mettre à jour le timestamp
cat — Afficher le contenu
$ cat fichier.txt # Afficher tout
$ cat file1.txt file2.txt # Concaténer plusieurs
$ cat file.txt | head -n 10 # Premiers 10 lignes
cp — Copier
$ cp source.txt destination.txt
$ cp -r dossier-source destination
$ cp -v fichier.txt backup.txt # Verbose (afficher actions)
mv — Déplacer/Renommer
$ mv ancien-nom.txt nouveau-nom.txt
$ mv fichier.txt /home/user/
$ mv -i fichier.txt destination # Interactif (demander confirmation)
rm — Supprimer
$ rm fichier.txt # Supprimer un fichier
$ rm -f fichier.txt # Force (sans confirmation)
$ rm -i *.txt # Interactif
file — Identifier le type de fichier
$ file random.bin
$ file document.pdf
wc — Compter les lignes/mots/octets
$ wc fichier.txt # Affiche lignes, mots, octets
$ wc -l fichier.txt # Nombre de lignes
$ wc -c fichier.txt # Nombre d'octets
Recherche et filtrage
find — Rechercher des fichiers
$ find . -name "*.js" # Chercher tous les .js
$ find /home -type f -size +1M # Fichiers supérieurs à 1MB
$ find . -name "test*" -type f
$ find . -modified -1 # Modifiés au cours de la dernière journée
grep — Rechercher du texte
$ grep "function" app.js # Chercher dans un fichier
$ grep -r "TODO" . # Chercher récursivement
$ grep -i "error" log.txt # Cas insensible
$ grep -c "pattern" file.txt # Compter les occurrences
locate — Trouver rapidement des fichiers
$ locate config.php # Chercher cached (plus rapide)
$ updatedb # Mettre à jour la base de données
which — Localiser une commande
$ which node # Chemin complet de la commande
$ which -a python # Toutes les occurrences
Permissions et propriétaires
chmod — Change Mode (permissions)
$ chmod 755 script.sh # Octal : rwxr-xr-x
$ chmod +x script.sh # Ajouter permission exécution
$ chmod -r readable script.sh # Retirer permission lecture
$ chmod -R 755 dossier/ # Récursivement pour le dossier
Comprendre les permissions (ls -l) :
-rwxr-xr-x 1 user group 1024 Apr 10 15:00 file.txt
| | | | |
| | | | +-- groupe
| | | +--------- propriétaire
| | +───────────────── autres
| +─────────────────────── groupe
+───────────────────────────── propriétaire
chown — Change Owner
$ chown user fichier.txt # Changer le propriétaire
$ chown user:group fichier.txt # User et groupe
$ chown -R user:group dossier/ # Récursivement
sudo — Execute as Super User
$ sudo apt update # Exécuter en tant qu'administrateur
$ sudo !! # Répéter la dernière commande en sudo
$ sudo -u username command # Exécuter en tant qu'un autre user
Processus et services
ps — Process Status
$ ps # Processus en cours
$ ps aux # Tous les processus détaillés
$ ps aux | grep node # Chercher les processus node
top — Monitor en temps réel
$ top # Vue complète du système
$ top -p 1234 # Monitor un processus spécifique
# Appuyer sur 'q' pour quitter
kill — Terminer un processus
$ kill 1234 # Terminer par PID
$ kill -9 1234 # Force kill
$ killall firefox # Tuer tous les processus firefox
systemctl — Gérer les services
$ systemctl start nginx # Démarrer un service
$ systemctl stop nginx # Arrêter
$ systemctl restart nginx # Redémarrer
$ systemctl enable nginx # Activer au démarrage
$ systemctl status nginx # Vérifier le statut
fg/bg — Foreground/Background
$ command & # Lancer en background
$ fg # Ramener au foreground
$ jobs # Lister les jobs
Réseau et connexion distante
ssh — Secure Shell
$ ssh user@192.168.1.100 # Connexion SSH
$ ssh -i ~/.ssh/key.pem user@server.com
$ ssh -p 2222 user@server.com # Port personnalisé
scp — Secure Copy
$ scp fichier.txt user@server:/home/user/
$ scp user@server:/home/file.txt .
$ scp -r dossier user@server:~/
ping — Tester la connexion
$ ping google.com # Vérifier la connexion
$ ping -c 5 google.com # 5 paquets seulement
netstat — Afficher les connexions réseau
$ netstat -tuln # Écouter les ports TCP/UDP
$ netstat -an | grep ESTABLISHED
$ lsof -i :3000 # Vérifier quel processus utilise port 3000
curl/wget — Télécharger depuis Internet
$ curl https://example.com/file.zip -o file.zip
$ wget https://example.com/file.tar.gz
$ curl -X POST -d "data" https://api.example.com
Compression et archives
tar — Archive Tape
$ tar -cvf archive.tar dossier/ # Créer une archive
$ tar -xvf archive.tar # Extraire
$ tar -tzvf archive.tar.gz # Lister le contenu
gzip — Compression
$ gzip fichier.txt # Compresser (crée fichier.txt.gz)
$ gunzip fichier.txt.gz # Décompresser
$ tar -czvf archive.tar.gz dossier/ # Archiver + compresser
zip/unzip
$ zip -r archive.zip dossier/ # Créer zip
$ unzip archive.zip # Extraire
$ unzip -l archive.zip # Lister le contenu
Édition de texte avancée
nano — Éditeur simple
$ nano fichier.txt # Ouvrir et éditer
# Ctrl+X pour quitter, Y pour sauvegarder
vi/vim — Éditeur puissant
$ vim fichier.txt # Ouvrir avec vim
# Mode commande : i (insert), :wq (save+quit), :q! (quit no save)
# /pattern (rechercher), n (suivant), N (précédent)
sed — Stream Editor
$ sed 's/ancien/nouveau/g' fichier.txt
$ sed -i 's/find/replace/g' fichier.txt # Modifier in-place
$ sed -n '5,10p' fichier.txt # Afficher lignes 5-10
awk — Traitement de texte
$ awk '{print $1}' data.txt # Afficher la première colonne
$ awk -F',' '{print $2}' file.csv
$ awk 'NR > 5' fichier.txt # À partir de la ligne 6
Gestion des utilisateurs
useradd — Ajouter un utilisateur
$ sudo useradd -m -s /bin/bash newuser
$ sudo useradd -m newuser
# -m : créer le répertoire home
# -s : définir le shell
passwd — Changer le mot de passe
$ passwd # Changer son propre mot de passe
$ sudo passwd user # Admin change pour un user
userdel — Supprimer un utilisateur
$ sudo userdel user # Supprimer l'utilisateur
$ sudo userdel -r user # Supprimer avec le home
whoami — Qui êtes-vous ?
$ whoami # Affiche l'utilisateur courant
$ id # UID, GID et groupes
sudo — Exécuter avec droits
$ sudo -l # Lister les permissions sudo
$ sudo visudo # Éditer les permissions sudo
Bonnes pratiques et astuces
Raccourcis du terminal :
Ctrl+C— Arrêter la commandeCtrl+Z— Suspendre/backgroundTab— Autocomplétion↑/↓— Historique des commandesCtrl+A— Début de la ligneCtrl+E— Fin de la ligneCtrl+R— Recherche dans l'historique
Pipes et redirections :
$ command1 | command2 # Pipe : sortie de 1 → entrée de 2
$ command > output.txt # Redirection vers fichier
$ command >> output.txt # Ajout à un fichier
$ command 2> error.log # Erreurs vers fichier
$ command &> all.log # Tout vers fichier
Wildcards et patterns :
$ ls *.txt # Extension txt
$ ls test? # Un caractère ?
$ rm -i * # Tous les fichiers
$ ls [a-z]* # Commençant par a-z
Astuces pratiques :
- Alias :
alias ll='ls -lh'pour raccourcir les commandes - man page :
man lspour la documentation - history :
historypour voir l'historique ou!123pour relancer - clear :
clearpour effacer l'écran - echo :
echo "texte"pour afficher du texte - head/tail : Voir début ou fin de fichier