Commandes Linux essentielles : maîtriser le terminal, les fichiers, les droits et les scripts Bash
- Thématique
- Systèmes, cloud & cybersécurité
- Mis à jour
- Lecture
- 15 min
- Formation
- Shell Linux - Apprendre le terminal et les commandes
L'essentiel en 30 secondes
- Les commandes Linux se tapent dans un terminal, interprétées par un shell, le plus souvent Bash.
- Une trentaine de commandes (ls, cd, cp, mv, rm, cat, less, grep, find, chmod, sudo, ps, systemctl…) couvrent l'essentiel du travail quotidien.
- Le pipe (|) envoie la sortie d'une commande vers l'entrée de la suivante, et les redirections (>, >>, 2>) envoient les résultats dans des fichiers.
- Chaque fichier Linux a un propriétaire, un groupe et des droits de lecture (r), d'écriture (w) et d'exécution (x), modifiables avec chmod et chown.
- La commande man suivie du nom d'une commande affiche son manuel complet, directement dans le terminal.
Sommaire de l'article
- Qu’est-ce que le terminal Linux et le shell Bash ?
- Pourquoi apprendre les commandes Linux ?
- L’arborescence Linux : comprendre où sont les fichiers
- Les commandes Linux essentielles, étape par étape
- Les droits Linux : chmod, chown et permissions spéciales
- Aller plus loin : processus, paquets, services, réseau et scripts
- Les erreurs fréquentes dans le terminal Linux
- Bash, Zsh ou PowerShell : quelle différence ?
- Comment apprendre les commandes Linux efficacement ?
- En résumé
Les commandes Linux sont les instructions que l’on tape dans un terminal pour piloter le système : se déplacer dans les dossiers, manipuler des fichiers, rechercher une information, gérer les droits, surveiller les processus, installer des logiciels ou automatiser des tâches avec un script. Une trentaine de commandes couvrent l’essentiel des besoins.
Ce guide s’adresse aux débutants motivés, aux étudiants en informatique et aux profils techniques qui visent l’administration système, le DevOps ou le cloud. Chaque commande est présentée avec un exemple réel que vous pouvez taper immédiatement. Si Linux n’est pas encore installé sur votre machine, commencez par notre guide pour apprendre Linux et choisir sa distribution, puis revenez ici.
Qu’est-ce que le terminal Linux et le shell Bash ?
Le terminal Linux est une interface texte qui permet de dialoguer avec le système en tapant des commandes. Ces commandes sont lues et exécutées par un shell, le plus souvent Bash (Bourne Again Shell). Le shell interprète aussi des variables, des boucles et des conditions, ce qui en fait un langage de script à part entière.
Ouvrez un terminal (Ctrl+Alt+T sur Ubuntu et Linux Mint) : vous voyez une invite de commande, le prompt, qui ressemble à ceci :
marie@portable:~$
On y lit le nom d’utilisateur, le nom de la machine, le dossier courant (~ désigne votre dossier personnel) et le symbole $, qui indique un utilisateur normal. Un # signale que vous êtes connecté en administrateur (root).
Une commande suit presque toujours la même structure : commande, options, arguments.
ls -l /etc # commande ls, option -l (format long), argument /etc
ls -la ~ # options combinées : -l et -a (fichiers cachés inclus)
ls --help # options longues, précédées de deux tirets
L’aide intégrée : man, —help et type
Avant de chercher sur Internet, prenez le réflexe de l’aide intégrée :
man ls # manuel complet (q pour quitter, / pour chercher)
ls --help # résumé des options
type cd # indique si la commande est interne au shell ou un programme externe
type ls
La commande type illustre la différence entre commandes internes (comme cd ou echo, intégrées à Bash et exécutées sans lancer de programme) et commandes externes (comme ls ou grep, qui sont des programmes stockés sur le disque, généralement dans /usr/bin).
Pourquoi apprendre les commandes Linux ?
L’interface graphique suffit pour un usage bureautique. Mais dès que l’on touche à l’informatique professionnelle, le terminal devient indispensable :
- Les serveurs n’ont pas d’interface graphique : on les administre à distance, en SSH, uniquement en ligne de commande.
- La rapidité : renommer 500 fichiers, chercher une erreur dans des journaux de plusieurs gigaoctets ou vérifier l’espace disque prend quelques secondes.
- L’automatisation : ce que vous tapez dans le terminal peut être enregistré dans un script et exécuté chaque nuit.
- Le DevOps et le cloud : Docker, Git, Kubernetes ou les outils des fournisseurs cloud s’utilisent d’abord en ligne de commande.
- La cybersécurité : analyse de journaux, droits, processus suspects, tout passe par le terminal.
L’arborescence Linux : comprendre où sont les fichiers
Sous Linux, il n’y a pas de lecteurs C: ou D: : tout part d’une racine unique, /. Les disques, clés USB et partitions sont montés dans des dossiers de cette arborescence. L’organisation suit un standard, le FHS (Filesystem Hierarchy Standard).
| Répertoire | Contenu |
|---|---|
/ | Racine de toute l’arborescence |
/home | Dossiers personnels des utilisateurs (/home/marie) |
/root | Dossier personnel de l’administrateur |
/etc | Fichiers de configuration du système et des services |
/var | Données variables : journaux (/var/log), caches, files d’attente |
/usr | Programmes et bibliothèques installés (/usr/bin, /usr/lib) |
/bin, /sbin | Commandes essentielles (souvent des liens vers /usr/bin et /usr/sbin sur les distributions récentes) |
/tmp | Fichiers temporaires, souvent vidés au redémarrage |
/dev | Fichiers représentant les périphériques (disques, terminaux) |
/proc, /sys | Informations du noyau sur les processus et le matériel |
/mnt, /media | Points de montage des disques et supports amovibles |
/opt | Logiciels tiers installés hors du gestionnaire de paquets |
Chemins absolus et chemins relatifs
Un chemin absolu commence par / et part de la racine : /home/marie/Documents/rapport.txt. Il fonctionne quel que soit le dossier courant. Un chemin relatif part du dossier courant : Documents/rapport.txt. Deux raccourcis sont à connaître : . désigne le dossier courant et .. le dossier parent.
Les commandes Linux essentielles, étape par étape
Étape 1 — Se déplacer dans l’arborescence
pwd # affiche le dossier courant
ls # liste le contenu
ls -lh # format long, tailles lisibles (Ko, Mo)
ls -la # inclut les fichiers cachés (commençant par un point)
cd /var/log # va dans /var/log (chemin absolu)
cd .. # remonte d'un niveau
cd # revient au dossier personnel (équivalent de cd ~)
cd - # revient au dossier précédent
La touche Tab complète automatiquement les noms de commandes, de fichiers et de dossiers. Appuyez deux fois pour voir toutes les possibilités. C’est le raccourci qui fait gagner le plus de temps et évite les fautes de frappe.
Étape 2 — Créer, copier, déplacer et supprimer
mkdir projets # crée un dossier
mkdir -p projets/2026/rapports # crée toute l'arborescence d'un coup
touch notes.txt # crée un fichier vide (ou met à jour sa date)
cp notes.txt notes-copie.txt # copie un fichier
cp -r projets projets-sauvegarde # copie un dossier et son contenu
mv notes.txt projets/ # déplace un fichier
mv ancien-nom.txt nouveau-nom.txt # renomme
rm notes-copie.txt # supprime un fichier
rm -r projets-sauvegarde # supprime un dossier et son contenu
rmdir dossier-vide # supprime un dossier vide
Attention : rm ne passe pas par une corbeille. Ce qui est supprimé l’est définitivement. Ajoutez l’option -i pour demander une confirmation, et relisez toujours une commande rm -r avant de valider.
Ces commandes deviennent beaucoup plus efficaces avec les caractères jokers, que le shell remplace par la liste des fichiers correspondants avant d’exécuter la commande :
ls *.txt # tous les fichiers se terminant par .txt
cp rapport-2026-0?.pdf archives/ # ? remplace exactement un caractère
mv photo-[1-3].jpg vacances/ # photo-1.jpg, photo-2.jpg et photo-3.jpg
ls projets/{2025,2026} # accolades : développe les deux chemins
Notre conseil : avant d’utiliser un joker avec rm ou mv, lancez d’abord ls avec exactement le même motif. Vous voyez ainsi la liste précise des fichiers concernés, et vous évitez les mauvaises surprises. Autre point à connaître : Linux distingue les majuscules et les minuscules dans les noms de fichiers. Rapport.txt et rapport.txt sont deux fichiers différents, ce qui surprend souvent les utilisateurs venus de Windows. Enfin, évitez les espaces et les accents dans les noms de fichiers que vous manipulez en ligne de commande : ils obligent à utiliser des guillemets et sont une source d’erreurs fréquente dans les scripts.
Étape 3 — Lire le contenu des fichiers
cat /etc/hostname # affiche un fichier court
less /var/log/syslog # lit un long fichier page par page (q pour quitter)
head -n 20 fichier.log # les 20 premières lignes
tail -n 50 fichier.log # les 50 dernières lignes
tail -f /var/log/syslog # suit le fichier en temps réel (Ctrl+C pour arrêter)
wc -l fichier.log # compte les lignes
Selon la distribution, le journal système peut se trouver dans /var/log/syslog (Debian, Ubuntu, Mint) ou être uniquement accessible via journalctl (Fedora et autres).
Pour modifier un fichier de configuration, nano est l’éditeur le plus simple : nano fichier.txt, puis Ctrl+O pour enregistrer et Ctrl+X pour quitter. vim est plus puissant mais demande un apprentissage spécifique.
Étape 4 — Rechercher avec grep et find
grep cherche un texte dans les fichiers ; find cherche des fichiers selon leurs caractéristiques.
grep "error" /var/log/syslog # lignes contenant "error"
grep -i "error" /var/log/syslog # sans tenir compte de la casse
grep -rn "server_name" /etc/nginx/ # récursif, avec numéros de ligne
grep -v "^#" /etc/ssh/sshd_config # tout sauf les lignes de commentaire
find /home -name "*.pdf" # fichiers PDF sous /home
find . -type f -size +100M # fichiers de plus de 100 Mo
find /var/log -name "*.log" -mtime -1 # journaux modifiés depuis moins de 24 h
find /tmp -type f -mtime +7 -delete # supprime les fichiers de plus de 7 jours
Testez toujours une commande find sans -delete pour vérifier la liste des fichiers concernés avant de les supprimer.
Étape 5 — Chaîner les commandes : pipes et redirections
C’est ici que le terminal devient réellement puissant. Le pipe | envoie la sortie d’une commande vers l’entrée de la suivante ; les redirections envoient la sortie dans un fichier.
ls -l /etc | less # paginer une longue sortie
ps aux | grep nginx # chercher un processus
cat access.log | cut -d' ' -f1 | sort | uniq -c | sort -rn | head
# les adresses IP les plus fréquentes d'un journal web
ls > liste.txt # écrit la sortie dans un fichier (écrase)
echo "nouvelle ligne" >> liste.txt # ajoute à la fin du fichier
commande-inexistante 2> erreurs.txt # redirige les erreurs
sauvegarde.sh > log.txt 2>&1 # sortie normale et erreurs dans le même fichier
Les opérateurs && et || enchaînent des commandes selon le résultat de la précédente : mkdir sauvegarde && cp *.txt sauvegarde/ ne copie que si la création du dossier a réussi.
Étape 6 — Travailler en administrateur avec sudo
L’utilisateur root a tous les droits. Pour limiter les risques, on travaille avec un compte normal et on préfixe les commandes d’administration par sudo, qui demande votre mot de passe :
sudo apt update # commande exécutée avec les droits root
sudo -i # ouvre un shell root (à utiliser avec prudence)
whoami # affiche l'utilisateur courant
id # affiche l'identifiant et les groupes
Étape 7 — Gagner du temps : historique, raccourcis et alias
Le shell garde en mémoire les commandes que vous tapez. Quelques réflexes suffisent pour ne plus jamais retaper une longue commande :
history | tail -n 20 # les 20 dernières commandes
!! # relance la dernière commande
sudo !! # relance la dernière commande avec sudo (oubli classique)
!42 # relance la commande numéro 42 de l'historique
Les raccourcis clavier de Bash sont tout aussi utiles : Ctrl+R recherche dans l’historique au fil de la frappe, Ctrl+A et Ctrl+E placent le curseur en début et en fin de ligne, Ctrl+U efface ce qui précède le curseur et Ctrl+L nettoie l’écran.
Pour vos commandes fréquentes, créez des alias dans le fichier ~/.bashrc, lu à chaque ouverture de terminal :
echo "alias ll='ls -lh'" >> ~/.bashrc
echo "alias maj='sudo apt update && sudo apt upgrade'" >> ~/.bashrc
source ~/.bashrc # recharge la configuration sans fermer le terminal
Ce même fichier sert à définir des variables d’environnement. echo $HOME affiche votre dossier personnel, echo $PATH la liste des dossiers dans lesquels le shell cherche les commandes, et export EDITEUR=nano crée une variable transmise aux programmes lancés depuis ce terminal.
Les droits Linux : chmod, chown et permissions spéciales
Chaque fichier appartient à un propriétaire et à un groupe. Trois types de droits s’appliquent à trois catégories d’utilisateurs : le propriétaire (u), le groupe (g) et les autres (o).
-rwxr-xr-- 1 marie devs 2048 sept. 26 10:00 deploy.sh
│ │ │
│ │ └── autres : r-- (lecture seule)
│ └───── groupe : r-x (lecture et exécution)
└──────── propriétaire : rwx (lecture, écriture, exécution)
Sur un dossier, r permet de lister le contenu, w d’y créer ou supprimer des fichiers et x d’y entrer.
| Droit | Lettre | Valeur octale | Sur un fichier | Sur un dossier |
|---|---|---|---|---|
| Lecture | r | 4 | Lire le contenu | Lister les fichiers |
| Écriture | w | 2 | Modifier le contenu | Créer, renommer, supprimer des fichiers |
| Exécution | x | 1 | Exécuter le programme ou le script | Entrer dans le dossier |
On additionne les valeurs pour chaque catégorie : 7 = rwx, 6 = rw-, 5 = r-x, 4 = r—.
chmod 644 rapport.txt # rw-r--r-- : fichier de données classique
chmod 755 deploy.sh # rwxr-xr-x : script exécutable par tous
chmod u+x deploy.sh # ajoute l'exécution au propriétaire (notation symbolique)
chmod -R g+w projets/ # ajoute l'écriture au groupe, récursivement
sudo chown marie:devs rapport.txt # change propriétaire et groupe
umask # masque appliqué aux nouveaux fichiers (souvent 0022)
Trois permissions spéciales complètent le tableau :
- le SUID (4000) : un exécutable s’exécute avec les droits de son propriétaire, c’est le cas de
passwd; - le SGID (2000) : sur un dossier, les fichiers créés héritent du groupe du dossier, idéal pour un dossier partagé ;
- le sticky bit (1000) : dans un dossier partagé, seul le propriétaire d’un fichier peut le supprimer, comme dans
/tmp.
Ne donnez jamais chmod 777 pour « régler » un problème d’accès : cela ouvre le fichier en écriture à tout le monde. Identifiez plutôt quel utilisateur doit y accéder et ajustez le propriétaire ou le groupe.
Aller plus loin : processus, paquets, services, réseau et scripts
Surveiller et arrêter les processus
ps aux # tous les processus
top # vue en temps réel (q pour quitter) ; htop si installé
kill 1234 # demande l'arrêt du processus 1234
kill -9 1234 # arrêt forcé, en dernier recours
pkill firefox # arrêt par nom
nice -n 10 ./calcul.sh # lance avec une priorité plus basse
renice 5 -p 1234 # modifie la priorité d'un processus existant
df -h # espace disque par partition
du -sh ~/Téléchargements # taille d'un dossier
free -h # mémoire utilisée et disponible
Installer des logiciels et gérer les services
sudo apt update && sudo apt upgrade # mettre à jour (Debian, Ubuntu, Mint)
sudo apt install nginx # installer un paquet
sudo apt autoremove # supprimer les dépendances devenues inutiles
sudo dnf install nginx # équivalent sous Fedora
sudo systemctl status nginx # état d'un service
sudo systemctl start nginx # démarrer
sudo systemctl enable --now nginx # activer au démarrage et démarrer
sudo systemctl restart nginx # redémarrer
journalctl -u nginx --since today # journaux du service depuis aujourd'hui
Archiver, compresser et monter
tar -czvf sauvegarde.tar.gz projets/ # créer une archive compressée
tar -xzvf sauvegarde.tar.gz # l'extraire
tar -tzvf sauvegarde.tar.gz # lister son contenu sans extraire
lsblk # disques et partitions
sudo mount /dev/sdb1 /mnt # monter une partition
sudo umount /mnt # la démonter avant de retirer le support
Diagnostiquer le réseau
Quelques commandes suffisent pour les diagnostics réseau courants, sur un poste comme sur un serveur :
ip a # adresses IP des interfaces
ip route # table de routage et passerelle par défaut
ping -c 4 example.com # tester la joignabilité d'un hôte
ss -tulpn # ports en écoute et programmes associés
ssh utilisateur@192.168.1.20 # se connecter à une machine distante
scp rapport.txt utilisateur@192.168.1.20:/tmp/ # copier un fichier vers cette machine
curl -I https://example.com # afficher les en-têtes HTTP d'un site
La commande ss -tulpn (avec sudo pour voir tous les programmes) est particulièrement utile pour comprendre pourquoi un service ne démarre pas : un autre programme occupe peut-être déjà son port.
Automatiser avec un premier script Bash
Un script Bash est un fichier texte qui enchaîne des commandes. Voici un script de sauvegarde réaliste, qui archive un dossier avec la date du jour et supprime les archives de plus de 14 jours :
#!/usr/bin/env bash
# sauvegarde.sh : archive un dossier et conserve 14 jours d'historique
set -euo pipefail
SOURCE="$HOME/projets"
DESTINATION="$HOME/sauvegardes"
DATE=$(date +%Y-%m-%d)
mkdir -p "$DESTINATION"
tar -czf "$DESTINATION/projets-$DATE.tar.gz" -C "$HOME" projets
find "$DESTINATION" -name "projets-*.tar.gz" -mtime +14 -delete
echo "Sauvegarde terminée : $DESTINATION/projets-$DATE.tar.gz"
Rendez-le exécutable et lancez-le :
chmod +x sauvegarde.sh
./sauvegarde.sh
La ligne set -euo pipefail arrête le script à la première erreur, ce qui évite qu’une commande ratée en déclenche d’autres. Pour l’exécuter automatiquement chaque nuit, ajoutez une ligne dans votre crontab avec crontab -e, par exemple 0 2 * * * /home/marie/sauvegarde.sh.
Les erreurs fréquentes dans le terminal Linux
| Erreur ou message | Cause | Solution |
|---|---|---|
command not found | Faute de frappe ou programme non installé | Vérifier l’orthographe, installer le paquet |
Permission denied | Droits insuffisants | Vérifier avec ls -l, utiliser sudo si c’est justifié |
No such file or directory | Mauvais chemin, espace dans le nom | Utiliser Tab, entourer le chemin de guillemets |
Script qui ne se lance pas avec ./script.sh | Droit d’exécution absent | chmod +x script.sh |
| Fichier écrasé par erreur | Utilisation de > au lieu de >> | Relire les redirections, travailler sur une copie |
| Suppression involontaire | rm -r avec un mauvais chemin ou un joker trop large | Tester avec ls le même motif avant rm, utiliser -i |
chmod 777 pour débloquer un accès | Solution rapide mais dangereuse | Ajuster propriétaire et groupe avec chown |
| Terminal bloqué | Programme au premier plan en attente | Ctrl+C pour interrompre, q pour quitter less ou top |
Bash, Zsh ou PowerShell : quelle différence ?
| Shell | Système principal | Particularité |
|---|---|---|
| Bash | Linux (par défaut sur la plupart des distributions) | Standard des serveurs et des scripts d’administration |
| Zsh | macOS (par défaut), Linux | Compatible avec la plupart des usages de Bash, complétion et personnalisation avancées |
| Fish | Linux, macOS | Suggestions automatiques, syntaxe plus simple mais différente de Bash |
| PowerShell | Windows, disponible aussi sous Linux et macOS | Manipule des objets et non du texte |
Si vous administrez aussi des postes Windows, notre guide pour débuter en PowerShell vous montrera les équivalents. Et ces commandes vous serviront directement pour utiliser Docker, dont les conteneurs reposent presque toujours sur Linux.
Comment apprendre les commandes Linux efficacement ?
Le terminal s’apprend en l’utilisant, pas en mémorisant des listes. Voici un parcours progressif :
- Semaine 1 : navigation, fichiers, lecture, aide intégrée. Obligez-vous à gérer vos fichiers depuis le terminal.
- Semaine 2 : grep, find, pipes et redirections. Analysez de vrais fichiers de journaux.
- Semaines 3 et 4 : droits, utilisateurs, processus, paquets, services et archives.
- Ensuite : écrivez un script Bash par semaine pour une tâche réelle (sauvegarde, nettoyage, rapport).
Pour suivre ce parcours avec des exercices corrigés, la formation au shell Linux d’EspritAcadémique propose 4 heures de pratique, sans prérequis. Elle aborde notamment :
- la configuration de la console et les principes du shell ;
- l’arborescence FHS, les chemins et la manipulation des fichiers ;
- la recherche avec grep et find, les entrées-sorties et les pipelines ;
- les permissions de base et spéciales (SUID, SGID, sticky bit, umask) ;
- les processus, l’archivage, les paquets et les services ;
- un module de ressources avec supports et scripts réutilisables.
Une fois à l’aise, versionner vos scripts avec Git est l’étape suivante logique, et la sécurité des systèmes Linux est un excellent point d’entrée pour apprendre la cybersécurité.
En résumé
Quelques dizaines de commandes Linux suffisent pour être autonome : ls, cd, cp, mv, rm pour les fichiers, grep et find pour la recherche, les pipes et redirections pour chaîner, chmod et chown pour les droits, ps, apt et systemctl pour administrer. Pratiquez chaque jour sur de vraies tâches, lisez le manuel avec man, puis transformez vos commandes répétitives en scripts Bash.
Questions fréquentes
Quelle est la différence entre le terminal, la console et le shell ?
Le terminal est la fenêtre dans laquelle vous tapez vos commandes. La console désigne historiquement l'écran et le clavier physiques d'une machine, et par extension les terminaux texte accessibles avec Ctrl+Alt+F3 par exemple. Le shell est le programme qui interprète vos commandes : Bash est le plus répandu, Zsh et Fish sont des alternatives.
Comment annuler une commande en cours dans le terminal Linux ?
Appuyez sur Ctrl+C : le signal d'interruption est envoyé au programme en cours, qui s'arrête. Ctrl+Z suspend le programme au lieu de l'arrêter ; vous pouvez ensuite le relancer en arrière-plan avec bg ou au premier plan avec fg. Si un programme ne répond plus du tout, utilisez kill avec son numéro de processus depuis un autre terminal.
Que signifie chmod 755 ?
chmod 755 donne tous les droits (lecture, écriture, exécution, soit 7) au propriétaire, et les droits de lecture et d'exécution (5) au groupe et aux autres utilisateurs. C'est le réglage classique pour un dossier ou un script que tout le monde peut exécuter mais que seul son propriétaire peut modifier. Pour un fichier de données, on utilise plutôt 644.
Les commandes Linux fonctionnent-elles sur macOS ?
En grande partie, oui. macOS est un système de type Unix et son terminal utilise Zsh par défaut : ls, cd, cp, mv, grep, find, chmod ou ps y fonctionnent. Certaines options diffèrent car macOS utilise les versions BSD de ces outils, et les commandes propres aux distributions Linux, comme apt ou systemctl, n'y existent pas.
Comment utiliser les commandes Linux sous Windows ?
Le plus simple est d'installer WSL, le sous-système Windows pour Linux, avec la commande wsl --install dans un PowerShell ouvert en administrateur. Vous obtenez une vraie distribution Linux, Ubuntu par défaut, accessible depuis le Terminal Windows. Vous pouvez aussi installer Linux dans une machine virtuelle avec VirtualBox ou VMware Workstation.
Combien de temps faut-il pour maîtriser le terminal Linux ?
Une à deux semaines de pratique quotidienne suffisent pour être à l'aise avec la navigation, les fichiers, la recherche et les droits. Comptez un à deux mois pour gérer sereinement processus, paquets, services et scripts Bash simples. Le plus efficace est d'utiliser le terminal pour de vraies tâches chaque jour plutôt que d'apprendre des listes de commandes par cœur.