1. La philosophie de la ligne de commande Linux

Sous Linux, tout se fait avec du texte : vous tapez une commande, le système l'exécute et affiche le résultat. C'est puissant parce que vous pouvez combiner des commandes, automatiser des tâches, et administrer votre serveur à distance depuis n'importe quel terminal dans le monde.

La structure d'une commande Linux :

bash
commande options arguments | | | ls -la /var/www
  • Commande : l'action à effectuer (ls, cd, rm...)
  • Options : modifient le comportement, précédées de - ou -- (-l, --help)
  • Arguments : ce sur quoi la commande agit (fichier, dossier, texte...)
💡

Astuce indispensable : Appuyez sur Tab pour auto-compléter les noms de fichiers et commandes. Appuyez sur les flèches et pour naviguer dans l'historique de vos commandes précédentes.

2. Navigation dans les dossiers

bash
# Afficher le dossier courant (Print Working Directory) pwd # Résultat : /home/mon-user # Lister les fichiers du dossier courant ls # Lister avec les permissions, taille et date (-l = long, -a = tous les fichiers dont cachés) ls -la # Lister un dossier spécifique ls -la /var/www/ # Changer de dossier cd /var/www/html # Remonter d'un niveau cd .. # Aller directement dans votre dossier personnel cd ~ # ou simplement cd # Aller dans le dernier dossier visité cd -

Les chemins en Linux :

  • / = racine du système (tout part de là)
  • ~ = votre dossier personnel (/home/mon-user)
  • . = dossier courant
  • .. = dossier parent

3. Gestion des fichiers et dossiers

bash
# Créer un fichier vide touch mon-fichier.txt # Créer un dossier mkdir mon-dossier # Créer plusieurs dossiers imbriqués en une fois (-p = parents) mkdir -p /var/www/monsite/public/images # Copier un fichier cp source.txt destination.txt # Copier un dossier entier (-r = récursif) cp -r mon-dossier/ copie-du-dossier/ # Déplacer (ou renommer) un fichier mv ancien-nom.txt nouveau-nom.txt mv fichier.txt /var/www/html/ # Supprimer un fichier rm fichier.txt # Supprimer un dossier et tout son contenu (-r = récursif) rm -r mon-dossier/ # Supprimer sans confirmation (-f = force) - ATTENTION, irréversible rm -rf mon-dossier/
🚨

rm -rf est irréversible. Il n'y a pas de corbeille sous Linux en ligne de commande. Un rm -rf /var/www/ supprime définitivement tout votre site. Vérifiez toujours votre commande avant d'appuyer sur Entrée.

4. Lire et éditer des fichiers

bash
# Afficher le contenu d'un fichier cat fichier.txt # Afficher avec numéros de lignes cat -n fichier.txt # Lire un long fichier page par page (q pour quitter, espace pour avancer) less fichier.txt # Afficher les 10 premières lignes head fichier.txt # Afficher les 10 dernières lignes tail fichier.txt # Suivre un fichier en temps réel (très utile pour les logs) tail -f /var/log/nginx/access.log # Chercher un texte dans un fichier grep "erreur" fichier.log # Chercher sans distinguer majuscules/minuscules (-i) grep -i "error" fichier.log # Chercher dans tous les fichiers d'un dossier (-r = récursif) grep -r "mot-de-passe" /var/www/ # Éditer un fichier avec nano (plus simple) nano fichier.txt # Ctrl+X pour quitter, Y pour sauvegarder # Éditer avec vim (plus puissant, courbe d'apprentissage plus raide) vim fichier.txt # i pour entrer en mode insertion, Esc puis :wq pour sauvegarder et quitter

5. Permissions et propriétés

Chaque fichier Linux a des permissions pour trois types d'utilisateurs : le propriétaire, le groupe, et tous les autres.

bash
# Voir les permissions d'un fichier ls -la fichier.txt # Résultat : -rw-r--r-- 1 root root 1234 Jan 15 10:00 fichier.txt # ^^^^^^^^^^^ propriétaire # | r = lecture (read) # | w = écriture (write) # | x = exécution (execute) # Changer les permissions chmod 644 fichier.txt # Propriétaire: lecture+écriture, autres: lecture seule chmod 755 mon-dossier/ # Dossier accessible et exécutable par tous chmod 600 .env # Uniquement le propriétaire peut lire et écrire chmod +x script.sh # Rendre un script exécutable # Changer le propriétaire d'un fichier chown mon-user fichier.txt # Changer propriétaire et groupe chown mon-user:mon-groupe fichier.txt # Changer récursivement pour tout un dossier chown -R www-data:www-data /var/www/html/
Permission Valeur Signification
rw-r--r-- 644 Fichier normal (lisible par tous, éditable par le propriétaire)
rwxr-xr-x 755 Script ou dossier (exécutable/traversable par tous)
rw------- 600 Fichier privé (clé SSH, .env)
rwx------ 700 Dossier privé

6. Gestion des processus et services

bash
# Voir tous les processus en cours ps aux # Chercher un processus spécifique ps aux | grep nginx # Voir les processus en temps réel (interface interactive) top # Appuyez sur q pour quitter, P pour trier par CPU, M pour trier par RAM # Version améliorée de top (à installer) htop # Tuer un processus par son PID (numéro de processus) kill 1234 # Forcer l'arrêt d'un processus récalcitrant kill -9 1234 # Tuer tous les processus d'un programme pkill nginx # ── Systemd (gestion des services) ────────────────────────────── # Voir l'état d'un service systemctl status nginx # Démarrer un service systemctl start nginx # Arrêter un service systemctl stop nginx # Redémarrer un service systemctl restart nginx # Recharger la config sans redémarrer systemctl reload nginx # Activer un service au démarrage du serveur systemctl enable nginx # Désactiver un service au démarrage systemctl disable nginx # Voir tous les services actifs systemctl list-units --type=service --state=active

7. Réseau et connectivité

bash
# Voir les interfaces réseau et adresses IP ip a # ou (plus ancien) ifconfig # Voir les connexions réseau actives et ports en écoute ss -tulpn # -t = TCP, -u = UDP, -l = en écoute, -p = processus, -n = numérique # Tester si un hôte est joignable ping google.com ping -c 4 google.com # Seulement 4 pings # Tracer le chemin réseau jusqu'à un hôte traceroute google.com # Voir le DNS résolu pour un domaine nslookup mondomaine.fr dig mondomaine.fr # Télécharger un fichier depuis internet wget https://exemple.com/fichier.zip curl -O https://exemple.com/fichier.zip # Afficher le contenu d'une URL curl https://api.exemple.com/status # ── UFW (pare-feu) ─────────────────────────────────────────────── systemctl status ufw # État du pare-feu ufw status # Règles actives ufw allow 80/tcp # Autoriser le port 80 ufw deny 3306 # Bloquer le port MySQL ufw delete allow 80/tcp # Supprimer une règle

8. Gestion des paquets (Debian/Ubuntu)

bash
# Mettre à jour la liste des paquets disponibles apt update # Installer les mises à jour système apt upgrade -y # Installer un paquet apt install nginx -y # Supprimer un paquet (garde les configs) apt remove nginx # Supprimer un paquet ET ses fichiers de config apt purge nginx # Supprimer les paquets inutilisés apt autoremove # Chercher un paquet apt search nom-du-paquet # Voir les infos d'un paquet apt show nginx # Voir les paquets installés dpkg -l

9. Espace disque et mémoire

bash
# Voir l'espace disque disponible (-h = human readable) df -h # Voir la taille d'un dossier du -sh /var/www/ # Voir les 10 plus gros dossiers du -h /var/ | sort -rh | head -10 # Voir la mémoire RAM utilisée free -h # Voir l'utilisation des ressources en temps réel top htop # Version améliorée # Voir l'uptime du serveur uptime # Informations système uname -a # Version de la distribution cat /etc/os-release

10. Logs et débogage

bash
# Voir les logs système journalctl # Logs d'un service spécifique journalctl -u nginx # Logs d'un service en temps réel journalctl -u nginx -f # Logs depuis le dernier démarrage journalctl -b # Logs des X dernières minutes journalctl --since "10 minutes ago" # Logs Nginx tail -f /var/log/nginx/access.log # Accès tail -f /var/log/nginx/error.log # Erreurs # Logs SSH tail -f /var/log/auth.log # Logs système généraux tail -f /var/log/syslog

11. Commandes utilitaires indispensables

bash
# Exécuter une commande en tant que root sudo ma-commande # Devenir root temporairement sudo -i # ou sudo su - # Voir l'historique de vos commandes history # Rechercher une commande dans l'historique history | grep nginx # Effacer l'écran clear # ou Ctrl+L # Afficher la date et l'heure date # Créer un alias (raccourci de commande) alias ll='ls -la' alias maj='apt update && apt upgrade -y' # Pour le rendre permanent, ajoutez-le dans ~/.bashrc # Passer plusieurs commandes en une ligne apt update && apt upgrade -y && apt autoremove # && = exécute la suivante seulement si la précédente réussit # ; = exécute toujours la suivante # Rediriger la sortie d'une commande vers un fichier ls -la > liste-fichiers.txt # Écrase le fichier ls -la >> liste-fichiers.txt # Ajoute à la fin # Passer la sortie d'une commande à une autre (pipe) ps aux | grep nginx cat access.log | grep "404" | wc -l # Compter les erreurs 404 # Trouver un fichier find / -name "nginx.conf" 2>/dev/null find /var/www -name "*.php" -mtime -7 # Fichiers PHP modifiés ces 7 derniers jours # Voir quelle commande est exécutée which nginx which python3 # Aide sur une commande man ls # Manuel complet ls --help # Aide courte

12. Raccourcis clavier du terminal

Raccourci Action
Tab Auto-complétion
/ Navigation dans l'historique
Ctrl+C Annuler la commande en cours
Ctrl+Z Suspendre la commande en cours
Ctrl+L Effacer l'écran
Ctrl+A Aller au début de la ligne
Ctrl+E Aller à la fin de la ligne
Ctrl+R Rechercher dans l'historique
Ctrl+D Déconnexion (équivalent de exit)

Vous avez maintenant les bases. Linux se maîtrise avec la pratique - n'hésitez pas à expérimenter sur votre VPS. En cas de doute sur une commande, tapez man nom-commande pour accéder au manuel complet, ou nom-commande --help pour un résumé rapide.