Commandes Linux essentielles : maîtriser le terminal, les fichiers, les droits et les scripts Bash – illustration Linux

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
  1. Qu’est-ce que le terminal Linux et le shell Bash ?
  2. Pourquoi apprendre les commandes Linux ?
  3. L’arborescence Linux : comprendre où sont les fichiers
  4. Les commandes Linux essentielles, étape par étape
  5. Les droits Linux : chmod, chown et permissions spéciales
  6. Aller plus loin : processus, paquets, services, réseau et scripts
  7. Les erreurs fréquentes dans le terminal Linux
  8. Bash, Zsh ou PowerShell : quelle différence ?
  9. Comment apprendre les commandes Linux efficacement ?
  10. 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épertoireContenu
/Racine de toute l’arborescence
/homeDossiers personnels des utilisateurs (/home/marie)
/rootDossier personnel de l’administrateur
/etcFichiers de configuration du système et des services
/varDonnées variables : journaux (/var/log), caches, files d’attente
/usrProgrammes et bibliothèques installés (/usr/bin, /usr/lib)
/bin, /sbinCommandes essentielles (souvent des liens vers /usr/bin et /usr/sbin sur les distributions récentes)
/tmpFichiers temporaires, souvent vidés au redémarrage
/devFichiers représentant les périphériques (disques, terminaux)
/proc, /sysInformations du noyau sur les processus et le matériel
/mnt, /mediaPoints de montage des disques et supports amovibles
/optLogiciels 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.

DroitLettreValeur octaleSur un fichierSur un dossier
Lecturer4Lire le contenuLister les fichiers
Écriturew2Modifier le contenuCréer, renommer, supprimer des fichiers
Exécutionx1Exécuter le programme ou le scriptEntrer 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 messageCauseSolution
command not foundFaute de frappe ou programme non installéVérifier l’orthographe, installer le paquet
Permission deniedDroits insuffisantsVérifier avec ls -l, utiliser sudo si c’est justifié
No such file or directoryMauvais chemin, espace dans le nomUtiliser Tab, entourer le chemin de guillemets
Script qui ne se lance pas avec ./script.shDroit d’exécution absentchmod +x script.sh
Fichier écrasé par erreurUtilisation de > au lieu de >>Relire les redirections, travailler sur une copie
Suppression involontairerm -r avec un mauvais chemin ou un joker trop largeTester avec ls le même motif avant rm, utiliser -i
chmod 777 pour débloquer un accèsSolution rapide mais dangereuseAjuster propriétaire et groupe avec chown
Terminal bloquéProgramme au premier plan en attenteCtrl+C pour interrompre, q pour quitter less ou top

Bash, Zsh ou PowerShell : quelle différence ?

ShellSystème principalParticularité
BashLinux (par défaut sur la plupart des distributions)Standard des serveurs et des scripts d’administration
ZshmacOS (par défaut), LinuxCompatible avec la plupart des usages de Bash, complétion et personnalisation avancées
FishLinux, macOSSuggestions automatiques, syntaxe plus simple mais différente de Bash
PowerShellWindows, disponible aussi sous Linux et macOSManipule 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 :

  1. Semaine 1 : navigation, fichiers, lecture, aide intégrée. Obligez-vous à gérer vos fichiers depuis le terminal.
  2. Semaine 2 : grep, find, pipes et redirections. Analysez de vrais fichiers de journaux.
  3. Semaines 3 et 4 : droits, utilisateurs, processus, paquets, services et archives.
  4. 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.