Commandes de base Linux
| 🏠 Accueil | 📚 Index | 🐧 Linux | 🌐 Réseau | 🔒 Cybersécurité | 🖥️ Virtualisation | ✅ Checklists d'intervention | 📚 Tutoriels | 🤝 Services |
|---|
🐧 COMMANDES DE BASE LINUX
Le guide pratique du terminal Linux
Le terminal Linux permet de gérer les fichiers, administrer le système, installer des logiciels, surveiller les ressources et configurer les services.
Ce guide rassemble les commandes essentielles pour débuter sous Linux, notamment sur Ubuntu Server et Debian.
Objectif : apprendre à utiliser les principales commandes Linux, comprendre leur rôle et savoir les adapter à ses besoins.
1. Comprendre le terminal Linux
Le terminal est une interface dans laquelle on saisit des commandes pour demander au système d'effectuer des opérations.
Une commande Linux peut contenir :
- Le nom du programme à exécuter.
- Des options qui modifient son comportement.
- Des arguments, comme un fichier ou un répertoire.
- Éventuellement, des privilèges administratifs.
Exemple :
ls -lah /var/log
Dans cet exemple :
- `ls` affiche le contenu d'un répertoire.
- `-l` demande un affichage détaillé.
- `-a` affiche également les fichiers cachés.
- `-h` présente les tailles dans un format lisible.
- `/var/log` indique le répertoire à afficher.
Les commandes avec sudo
`sudo` permet à un utilisateur autorisé d'exécuter une commande avec des privilèges élevés.
Exemple :
sudo apt update
Le mot de passe demandé est généralement celui de l'utilisateur courant, et non celui du compte `root`.
Attention : une commande exécutée avec `sudo` peut modifier le système. Lis toujours la commande avant de la valider, particulièrement lorsqu'elle supprime des fichiers ou modifie le réseau.
2. Se déplacer dans les répertoires
Ces commandes permettent de naviguer dans l'arborescence Linux.
| Commande | Fonction | Exemple |
|---|---|---|
| `pwd` | Affiche le répertoire courant. | `pwd` |
| `ls` | Liste les fichiers et répertoires. | `ls` |
| `ls -l` | Affiche les détails des fichiers. | `ls -l` |
| `ls -lah` | Affiche les fichiers cachés et les tailles lisibles. | `ls -lah` |
| `cd` | Accède au répertoire personnel. | `cd` |
| `cd /etc` | Accède à un répertoire précis. | `cd /etc` |
| `cd ..` | Remonte d'un niveau. | `cd ..` |
| `cd -` | Revient au répertoire précédent. | `cd -` |
Exemple pratique
pwd ls -lah cd /var pwd cd ..
Comprendre les chemins
| Chemin | Signification | |- | `/` | Racine du système. | `~` | Répertoire personnel de l'utilisateur. | `.` | Répertoire courant. | `..` | Répertoire parent. | `/etc` | Répertoire des configurations système. | `/home` | Répertoires personnels des utilisateurs. | `/var/log` | Répertoire courant de nombreux journaux système et applicatifs.
3. Créer, copier, déplacer et supprimer des fichiers
| Commande | Fonction | Exemple |
|---|---|---|
| `touch` | Crée un fichier vide s'il n'existe pas. | `touch test.txt` |
| `mkdir` | Crée un répertoire. | `mkdir documents` |
| `mkdir -p` | Crée un répertoire et ses parents si nécessaire. | `mkdir -p projets/linux` |
| `cp` | Copie un fichier. | `cp source.txt copie.txt` |
| `cp -r` | Copie un répertoire et son contenu. | `cp -r dossier sauvegarde` |
| `mv` | Déplace ou renomme un fichier. | `mv ancien.txt nouveau.txt` |
| `rm` | Supprime un fichier. | `rm test.txt` |
| `rmdir` | Supprime un répertoire vide. | `rmdir vide` |
| `file` | Identifie le type d'un fichier. | `file document.pdf` |
Exemple pratique
mkdir -p ~/exercices/linux cd ~/exercices/linux touch test.txt cp test.txt copie.txt mv copie.txt sauvegarde.txt ls -l
Supprimer un répertoire
La commande suivante supprime un répertoire et son contenu :
rm -r dossier
Danger : `rm -r` peut supprimer de nombreux fichiers. Vérifie toujours le chemin avant de valider. Évite d'utiliser des commandes de suppression avec des chemins larges ou des jokers que tu n'as pas vérifiés.
4. Lire et modifier le contenu des fichiers
| Commande | Fonction | Exemple |
|---|---|---|
| `cat` | Affiche le contenu d'un fichier. | `cat fichier.txt` |
| `less` | Consulte un fichier page par page. | `less /var/log/syslog` |
| `head` | Affiche le début d'un fichier. | `head fichier.txt` |
| `head -n 20` | Affiche les 20 premières lignes. | `head -n 20 fichier.txt` |
| `tail` | Affiche les dernières lignes. | `tail fichier.txt` |
| `tail -f` | Suit les nouvelles lignes ajoutées à un fichier. | `tail -f journal.log` |
| `nano` | Ouvre un éditeur de texte dans le terminal. | `nano fichier.txt` |
| `wc -l` | Compte les lignes. | `wc -l fichier.txt` |
Modifier un fichier avec nano
nano notes.txt
Dans Nano, les raccourcis courants sont :
- `Ctrl + O` : enregistrer.
- `Entrée` : confirmer le nom du fichier.
- `Ctrl + X` : quitter.
- `Ctrl + W` : rechercher du texte.
Lire un journal en direct
sudo tail -f /var/log/syslog
Cette commande est utile pour observer les nouveaux messages ajoutés au journal, si ce fichier est utilisé par la distribution et la configuration installées.
Pour arrêter l'affichage, appuie sur `Ctrl + C`.
5. Rechercher des fichiers et du texte
| Commande | Fonction | Exemple |
|---|---|---|
| `find` | Recherche des fichiers selon des critères. | `find /home -name "*.txt"` |
| `grep` | Recherche du texte correspondant à un motif. | `grep "erreur" journal.log` |
| `grep -i` | Recherche sans tenir compte de la casse. | `grep -i "erreur" journal.log` |
| `grep -n` | Affiche les numéros des lignes correspondantes. | `grep -n "Listen" fichier.conf` |
| `which` | Recherche une commande dans le PATH. | `which python3` |
| `whereis` | Recherche certains emplacements associés à un programme. | `whereis apache2` |
Exemple : rechercher un fichier
find ~/Documents -name "*.pdf"
Exemple : rechercher une ligne dans un fichier
grep -n "ServerName" /etc/apache2/apache2.conf
Pour rechercher un texte dans plusieurs fichiers de configuration, il est également possible d'utiliser `grep -R`, en limitant la recherche aux répertoires utiles.
6. Gérer les utilisateurs et les groupes
| Commande | Fonction |
|---|---|
| `whoami` | Affiche le nom de l'utilisateur courant. |
| `id` | Affiche l'identifiant et les groupes de l'utilisateur. |
| `who` | Affiche les utilisateurs connectés. |
| `w` | Affiche les connexions et certaines informations d'activité. |
| `groups` | Affiche les groupes de l'utilisateur. |
| `passwd` | Modifie le mot de passe de l'utilisateur courant. |
| `sudo adduser nom` | Crée un utilisateur sur Ubuntu et Debian. |
| `sudo deluser nom` | Supprime un utilisateur selon les options utilisées. |
Exemples
Afficher l'utilisateur courant :
whoami
Afficher les groupes de l'utilisateur :
id groups
Créer un compte utilisateur :
sudo adduser pierre
Modifier son mot de passe :
passwd
La création et la suppression de comptes doivent être réalisées avec prudence sur un serveur en production.
7. Gérer les permissions et les propriétaires
Linux associe des permissions aux fichiers et répertoires.
Les trois permissions principales sont :
- `r` : lecture.
- `w` : écriture.
- `x` : exécution, ou traversée pour un répertoire.
Les droits sont définis pour le propriétaire, le groupe et les autres utilisateurs.
| Commande | Fonction |
|---|---|
| `ls -l` | Affiche les permissions et le propriétaire. |
| `chmod` | Modifie les permissions. |
| `chown` | Modifie le propriétaire. |
| `chgrp` | Modifie le groupe propriétaire. |
Exemples
Afficher les droits :
ls -l fichier.txt
Attribuer des permissions `640` :
chmod 640 fichier.txt
Modifier le propriétaire :
sudo chown pierre:pierre fichier.txt
Comprendre chmod 640
| Valeur | Droits | Signification | |- | `6` | `rw-` | Le propriétaire peut lire et écrire. | `4` | `r--` | Le groupe peut lire. | `0` | `---` | Les autres n'ont aucun droit.
Les permissions doivent être adaptées à l'utilisation du fichier. Pour un site Web ou un service, il faut aussi tenir compte de l'utilisateur sous lequel le service s'exécute.
8. Installer et mettre à jour les logiciels
Sur Ubuntu et Debian, APT permet de gérer les paquets logiciels.
| Commande | Fonction |
|---|---|
| `sudo apt update` | Actualise la liste des paquets disponibles. |
| `sudo apt upgrade` | Installe les mises à jour proposées. |
| `sudo apt install nom` | Installe un paquet. |
| `sudo apt remove nom` | Supprime un paquet. |
| `sudo apt purge nom` | Supprime un paquet et ses configurations gérées par APT. |
| `sudo apt autoremove` | Supprime certains paquets devenus inutiles. |
| `apt search mot` | Recherche des paquets. |
| `apt show nom` | Affiche des informations sur un paquet. |
Exemple : installer curl
sudo apt update sudo apt install curl
Vérifier la version installée :
curl --version
Conseil : sur un serveur de production, lis les opérations proposées par APT et planifie les mises à jour susceptibles d'affecter des services importants.
9. Surveiller le système et les ressources
| Commande | Fonction |
|---|---|
| `top` | Affiche les processus et l'utilisation des ressources. |
| `ps aux` | Liste les processus en cours. |
| `free -h` | Affiche l'utilisation de la mémoire. |
| `df -h` | Affiche l'espace disque des systèmes de fichiers. |
| `du -sh dossier` | Affiche la taille totale d'un répertoire. |
| `uptime` | Affiche le temps de fonctionnement et la charge système. |
| `lscpu` | Affiche des informations sur le processeur. |
| `lsblk` | Affiche les disques et les périphériques de blocs. |
| `vmstat` | Affiche diverses statistiques système, si disponible. |
Vérifier l'espace disque
df -h
Identifier les répertoires volumineux
sudo du -sh /var/log sudo du -sh /var/cache/apt
Afficher les processus
ps aux
Pour rechercher un processus par son nom :
pgrep -a apache2
10. Gérer les services avec systemctl
De nombreux services Linux sont gérés par `systemd`.
| Commande | Fonction |
|---|---|
| `systemctl status nom` | Affiche l'état d'un service. |
| `sudo systemctl start nom` | Démarre un service. |
| `sudo systemctl stop nom` | Arrête un service. |
| `sudo systemctl restart nom` | Redémarre un service. |
| `sudo systemctl reload nom` | Demande au service de recharger sa configuration, si cette opération est prise en charge. |
| `sudo systemctl enable nom` | Active le démarrage automatique. |
| `sudo systemctl disable nom` | Désactive le démarrage automatique. |
| `systemctl --failed` | Liste les unités en échec. |
Exemple avec Apache
sudo systemctl status apache2 sudo systemctl restart apache2
Avant de redémarrer un service important, vérifie la configuration et prévois les conséquences d'une interruption.
11. Réseau : commandes indispensables
| Commande | Fonction |
|---|---|
| `ip addr` | Affiche les interfaces et les adresses IP. |
| `ip route` | Affiche les routes réseau. |
| `ping adresse` | Teste la connectivité ICMP vers une destination. |
| `ss -tulpn` | Affiche les sockets en écoute et certaines informations de processus. |
| `hostname -I` | Affiche les adresses IP associées à la machine. |
| `getent hosts nom` | Recherche une adresse associée à un nom à l'aide des mécanismes système. |
| `curl -I URL` | Affiche les en-têtes HTTP renvoyés par une URL. |
| `resolvectl status` | Affiche l'état DNS avec systemd-resolved, si utilisé. |
Afficher les adresses IP
ip addr hostname -I
Afficher la passerelle et les routes
ip route
Tester la connectivité
ping -c 4 1.1.1.1
Cette commande envoie quatre requêtes ICMP. L'absence de réponse ne signifie pas toujours que la destination est inaccessible : certains réseaux filtrent ce trafic.
Vérifier les ports en écoute
sudo ss -tulpn
Cette commande aide à identifier les services qui écoutent sur le serveur.
12. Consulter les journaux système
Les journaux sont essentiels pour diagnostiquer les problèmes.
| Commande | Fonction |
|---|---|
| `journalctl -b` | Affiche les journaux depuis le démarrage actuel. |
| `journalctl -p err` | Affiche les messages de niveau erreur ou plus grave. |
| `journalctl -u apache2` | Affiche les journaux associés au service Apache. |
| `journalctl -f` | Suit les nouveaux messages en direct. |
| `dmesg` | Affiche les messages du noyau, selon les permissions et la configuration. |
Exemple : rechercher les erreurs
sudo journalctl -p err -b
Exemple : consulter Apache
sudo journalctl -u apache2 -n 50
Pour quitter un affichage en direct, utilise `Ctrl + C`.
13. Archiver et sauvegarder des fichiers
| Commande | Fonction |
|---|---|
| `tar -czf` | Crée une archive compressée gzip. |
| `tar -xzf` | Extrait une archive gzip. |
| `gzip` | Compresse un fichier. |
| `gunzip` | Décompresse un fichier gzip. |
| `rsync` | Synchronise des fichiers et des répertoires. |
| `scp` | Copie des fichiers via SSH. |
Créer une archive
tar -czf documents.tar.gz documents/
Extraire une archive
tar -xzf documents.tar.gz
Copier un répertoire avec rsync
rsync -av documents/ sauvegarde-documents/
Copier un fichier vers un serveur distant
scp fichier.txt utilisateur@192.168.1.20:/home/utilisateur/
Important : une synchronisation n'est pas toujours une sauvegarde suffisante. Pour protéger les données, utilise une destination distincte, prévois plusieurs versions et teste la restauration.
14. Redirections et tubes
Linux permet de combiner les commandes et de rediriger leurs résultats.
| Symbole | Fonction | Exemple |
|---|---|---|
| `>` | Écrit la sortie dans un fichier en remplaçant son contenu. | `ls > fichiers.txt` |
| `>>` | Ajoute la sortie à la fin d'un fichier. | `date >> journal.txt` |
| ` | Transmet la sortie d'une commande à une autre. | less` |
| `2>` | Redirige les messages d'erreur. | `commande 2> erreurs.txt` |
| `&>` | Redirige la sortie standard et les erreurs dans Bash. | `commande &> resultat.txt` |
Exemple : rechercher un processus
ps aux | grep apache2
Exemple : enregistrer un résultat
ip addr > reseau.txt
Attention : le symbole `>` remplace le contenu du fichier de destination. Vérifie le nom du fichier avant de l'utiliser.
15. Raccourcis utiles du terminal
| Raccourci | Fonction |
|---|---|
| `Tab` | Complète un nom de fichier ou une commande lorsque c'est possible. |
| `Flèche haut` | Rappelle une commande précédente. |
| `Ctrl + C` | Interrompt généralement le programme au premier plan. |
| `Ctrl + D` | Envoie généralement une fin de fichier ou termine un shell interactif. |
| `Ctrl + L` | Efface l'affichage du terminal. |
| `Ctrl + R` | Recherche dans l'historique des commandes avec les shells compatibles, notamment Bash. |
| `man commande` | Affiche le manuel d'une commande. |
| `commande --help` | Affiche une aide succincte si la commande prend cette option en charge. |
Exemple : consulter le manuel
man ls
Pour quitter le manuel, appuie généralement sur `q`.
16. Variables et informations d'environnement
Les variables d'environnement donnent des informations au shell et aux programmes.
| Commande | Fonction |
|---|---|
| `echo $HOME` | Affiche le répertoire personnel. |
| `echo $USER` | Affiche le nom de l'utilisateur courant. |
| `echo $PATH` | Affiche les répertoires de recherche des commandes. |
| `env` | Affiche les variables d'environnement exportées. |
| `date` | Affiche la date et l'heure système. |
| `history` | Affiche l'historique des commandes du shell. |
Exemple
echo $HOME echo $USER date
Évite de placer des mots de passe ou des secrets dans l'historique du shell ou dans des scripts accessibles à d'autres utilisateurs.
17. Arrêter ou redémarrer le système
Ces commandes doivent être utilisées avec précaution, particulièrement sur un serveur hébergeant des services accessibles à d'autres personnes.
| Commande | Fonction |
|---|---|
| `uptime` | Vérifie le temps de fonctionnement. |
| `sudo reboot` | Redémarre le système. |
| `sudo poweroff` | Arrête le système. |
| `sudo shutdown -h now` | Demande un arrêt immédiat. |
| `sudo shutdown -r now` | Demande un redémarrage immédiat. |
Avant d'arrêter un serveur, préviens les utilisateurs concernés, vérifie les tâches en cours et assure-toi de disposer d'un accès pour le redémarrer.
18. Les commandes à utiliser avec prudence
Commandes sensibles :
- `rm -r` : supprime récursivement des fichiers et des répertoires.
- `chmod -R` : modifie récursivement les permissions.
- `chown -R` : modifie récursivement le propriétaire et éventuellement le groupe.
- `mkfs` : crée un système de fichiers et peut rendre les données présentes inaccessibles.
- `dd` : copie des données de bas niveau ; une mauvaise destination peut détruire des données.
- `fdisk` et `parted` : permettent de modifier le partitionnement.
- `sudo` : peut autoriser des opérations administratives importantes.
Ne copie jamais une commande destructrice sans comprendre chaque argument et vérifier la cible.
19. Exercices pratiques
Ces exercices peuvent être réalisés dans un répertoire personnel, sans modifier les fichiers système.
Exercice 1 : créer une arborescence
Objectif : créer un répertoire de travail avec deux sous-répertoires.
mkdir -p ~/atelier/linux/fichiers mkdir -p ~/atelier/linux/archives
Vérifier le résultat :
ls -lah ~/atelier/linux
Exercice 2 : créer et copier un fichier
cd ~/atelier/linux/fichiers touch exemple.txt cp exemple.txt exemple-copie.txt ls -l
Exercice 3 : créer une archive
cd ~/atelier/linux tar -czf archives/fichiers.tar.gz fichiers/
Vérifier le contenu de l'archive :
tar -tzf archives/fichiers.tar.gz
Exercice 4 : observer le système
whoami hostname free -h df -h ip addr
Ces commandes permettent d'identifier l'utilisateur, la machine, les ressources et les interfaces réseau.
20. Tableau récapitulatif
| Besoin | Commande à retenir |
|---|---|
| Afficher le dossier courant | `pwd` |
| Lister les fichiers | `ls -lah` |
| Changer de répertoire | `cd` |
| Créer un répertoire | `mkdir` |
| Copier un fichier | `cp` |
| Déplacer ou renommer | `mv` |
| Supprimer un fichier | `rm` |
| Lire un fichier | `cat` ou `less` |
| Modifier un texte | `nano` |
| Rechercher un fichier | `find` |
| Rechercher du texte | `grep` |
| Connaître l'utilisateur | `whoami` |
| Voir les permissions | `ls -l` |
| Mettre à jour la liste des paquets | `sudo apt update` |
| Installer un logiciel | `sudo apt install nom` |
| Vérifier la mémoire | `free -h` |
| Vérifier le disque | `df -h` |
| Voir les adresses IP | `ip addr` |
| Voir les ports en écoute | `sudo ss -tulpn` |
| Vérifier un service | `systemctl status nom` |
| Consulter les journaux | `journalctl` |
| Afficher l'aide | `man commande` |
21. Ressources et documentation
- Documentation officielle Ubuntu Server
- Pages de manuel Ubuntu
- Manuel GNU Coreutils
- Manuel officiel Bash
- Pages de manuel Linux
- Documentation officielle Debian