Les commandes Linux essentielles à connaître

🏷️ Administration Serveur 📅 12/04/2026 12:00:00 👤 Mezgani Said
Linux Command Line Terminal Developpement Administration
Les commandes Linux essentielles à connaître

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.

À retenir : Linux = terminal. Les commandes sont votre meilleur ami pour automatiser, déployer et gérer vos serveurs.

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

Navigation et répertoires

pwd — Print Working Directory

$ pwd
/home/mezгani/projects

Affiche le chemin complet du répertoire actuel.

ls — List

$ ls                           # Lister les fichiers
$ ls -l                        # Format long avec permissions
$ ls -la                       # Inclure les fichiers cachés
$ ls -lh                       # Tailles lisibles
$ ls -lS                       # Triés par taille

cd — Change Directory

$ cd /home/mezgani             # Chemin absolu
$ cd projects                  # Chemin relatif
$ cd ..                        # Répertoire parent
$ cd ~                         # Home directory
$ cd -                         # Répertoire précédent

mkdir — Make Directory

$ mkdir mon-dossier            # Créer un répertoire
$ mkdir -p a/b/c/d            # Créer récursivement

rmdir — Remove Directory

$ rmdir mon-dossier            # Supprimer vide
$ rm -rf mon-dossier          # Supprimer avec contenu

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 commande
  • Ctrl+Z — Suspendre/background
  • Tab — Autocomplétion
  • ↑/↓ — Historique des commandes
  • Ctrl+A — Début de la ligne
  • Ctrl+E — Fin de la ligne
  • Ctrl+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 ls pour la documentation
  • history : history pour voir l'historique ou !123 pour relancer
  • clear : clear pour effacer l'écran
  • echo : echo "texte" pour afficher du texte
  • head/tail : Voir début ou fin de fichier
Conclusion : Ces commandes Linux sont essentielles pour tout développeur et administrateur. Pratiquez régulièrement, consultez les man pages et n'hésitez pas à combiner les commandes avec les pipes pour des workflows puissants et productifs.