Guide complet des commandes Linux : tutoriel et aide-mémoire

Guide indépendant

Ce guide est une référence progressive et pratique du terminal Linux. Il commence par les commandes indispensables, puis mène vers l’administration, le diagnostic et l’automatisation. Les exemples couvrent les familles Debian/Ubuntu, Fedora/RHEL et Arch Linux.

Principe important : lisez une commande avant de l’exécuter, adaptez les chemins à votre système et testez les opérations destructrices sur des fichiers sans importance. Une commande exécutée avec sudo agit avec les privilèges administrateur.

1. Bien démarrer avec le terminal

Un terminal exécute un shell, généralement Bash. Le prompt indique habituellement l’utilisateur, la machine et le dossier courant. Linux distingue les majuscules des minuscules : Notes.txt et notes.txt sont deux fichiers différents.

Notations utilisées

Notations utilisées
NotationSignificationExemple
$Commande exécutée comme utilisateur normal$ ls -la
#Commande exécutée comme administrateur root# systemctl restart sshd
~Répertoire personnel de l’utilisateurcd ~/Documents
. et ..Dossier courant et dossier parentcd ..
commande --helpAide courte intégréecp --help
man commandeManuel détaillé, quitter avec qman find

Raccourcis qui font gagner du temps

Raccourcis qui font gagner du temps
RaccourciAction
TabComplète un nom de commande, fichier ou répertoire
Ctrl+CInterrompt la commande active
Ctrl+LNettoie l’affichage du terminal
Ctrl+RRecherche une ancienne commande dans l’historique
Ctrl+A / Ctrl+EVa au début / à la fin de la ligne
Ctrl+U / Ctrl+KEfface avant / après le curseur

2. Commandes de base : navigation et fichiers

Ces commandes constituent le socle quotidien. Commencez par pwd, ls et cd, puis ajoutez progressivement les opérations de création et de copie.

Navigation
CommandeRôleExemple utile
pwdAffiche le chemin absolu du dossier courantpwd
lsListe les fichiersls -lah
cdChange de répertoirecd /var/log
cd -Revient au répertoire précédentcd -
cd ~Revient au répertoire personnelcd ~
treeAffiche une arborescence lisibletree -L 2 projet/

Options utiles de ls : -l pour le format détaillé, -a pour les fichiers cachés, -h pour les tailles lisibles, -t pour trier par date et -S pour trier par taille.

Créer, copier, déplacer et supprimer

Créer, copier, déplacer et supprimer
CommandeRôleExempleAttention
touchCrée un fichier vide ou actualise sa datetouch notes.txtN’efface pas un fichier existant
mkdirCrée un répertoiremkdir -p projet/src-p crée les parents manquants
cpCopie fichiers et répertoirescp -a projet/ sauvegarde/-a préserve attributs et liens
mvDéplace ou renommemv ancien.txt nouveau.txtPeut remplacer une destination existante
rmSupprime un fichierrm -i brouillon.txtPas de corbeille; utiliser -i en apprentissage
rmdirSupprime un répertoire vidermdir dossier-vide/Refuse les répertoires non vides
lnCrée un lien physique ou symboliqueln -s /opt/app/current appUn lien symbolique peut devenir cassé
fileIdentifie le type réel d’un fichierfile archive.binNe se fie pas seulement à l’extension
statAffiche métadonnées et horodatagesstat fichier.txtUtile pour permissions et dates
# Créer une structure de projet sans écraser de fichiers
mkdir -p ~/projets/demo/{src,docs,tests}
touch ~/projets/demo/README.md
mkdir -p ~/projets/demo-sauvegarde
cp -a --no-clobber -- ~/projets/demo/. ~/projets/demo-sauvegarde/

3. Lire, écrire et transformer du texte

Les configurations, journaux et scripts sont majoritairement textuels. Privilégiez less pour consulter un gros fichier sans le charger entièrement.

3. Lire, écrire et transformer du texte
CommandeUsageExemple
catAffiche ou concatène de petits fichierscat /etc/os-release
lessLecture paginée et recherche avec /less /var/log/syslog
headAffiche le débuthead -n 20 fichier.log
tailAffiche la fin ou suit les ajoutstail -F application.log
nlAjoute des numéros de lignenl -ba script.sh
wcCompte lignes, mots ou octetswc -l *.log
sortTrie les lignessort -u utilisateurs.txt
uniqRegroupe les doublons adjacentssort noms.txt | uniq -c
cutExtrait des champs simplescut -d: -f1 /etc/passwd
trTraduit ou supprime des caractèrestr '[:lower:]' '[:upper:]'
sedTransforme un flux ligne par lignesed 's/http:/https:/g' fichier
awkAnalyse des colonnes et calculeawk '{print $1, $NF}' acces.log
diffCompare deux fichiersdiff -u avant.conf apres.conf
Édition sûre : créez une copie avant une modification massive. Avec GNU sed, sed -i.bak 's/ancien/nouveau/g' fichier conserve une sauvegarde fichier.bak.

Éditeurs en terminal

Éditeurs en terminal
ÉditeurPour qui?CommandeRepère essentiel
nanoDébutants et modifications rapidesnano fichier.confCtrl+O enregistrer, Ctrl+X quitter
vimUtilisateurs avancésvim fichier.confi insérer, Esc :wq enregistrer/quitter
microInterface moderne et intuitivemicro fichier.confRaccourcis proches des éditeurs graphiques

4. Rechercher des fichiers et du contenu

4. Rechercher des fichiers et du contenu
OutilCe qu’il rechercheExemple
findFichiers selon nom, taille, date ou permissionsfind ~/Documents -type f -iname '*.pdf'
locateNoms dans un index très rapidelocate nginx.conf
grepTexte contenu dans des fichiersgrep -Rni -- 'erreur' /var/log/app
rgRecherche récursive rapide dans un projetrg -n 'TODO|FIXME' .
whichExécutable choisi dans le PATHwhich python3
command -vCommande, alias ou fonction disponiblecommand -v docker
# Fichiers de plus de 100 Mio modifiés depuis moins de 7 jours
find /var -type f -size +100M -mtime -7 -print 2>/dev/null

# Chercher "timeout" sans tenir compte de la casse
rg -ni 'timeout' /etc/nginx 2>/dev/null

# N’exécutez une action destructive qu’après avoir inspecté la liste
find /tmp -type f -mtime +14 -print

5. Utilisateurs, groupes et permissions

ls -l affiche les droits sous la forme -rwxr-x---. Les trois triplets concernent le propriétaire, le groupe et les autres. Les lettres sont r (lecture), w (écriture) et x (exécution ou traversée d’un dossier).

5. Utilisateurs, groupes et permissions
CommandeRôleExemple sûr
whoamiUtilisateur courantwhoami
idUID, GID et groupesid alice
getentInterroge comptes et groupes via NSSgetent passwd alice
sudoExécute une commande autorisée comme rootsudo systemctl status ssh
passwdChange un mot de passepasswd
useraddCrée un comptesudo useradd -m -s /bin/bash alice
usermodModifie groupes et propriétéssudo usermod -aG sudo alice
chmodModifie les permissionschmod u+x script.sh
chownChange propriétaire et groupesudo chown alice:devs projet/
umaskDéfinit les droits retirés par défautumask 027

Modes numériques courants

Modes numériques courants
ModeUsage courantInterprétation
600Clé privée, fichier secretPropriétaire lecture/écriture seulement
644Fichier texte publicPropriétaire écrit; tous lisent
700Répertoire privé ou script privéPropriétaire seulement
750Répertoire partagé avec un groupeGroupe lit et traverse
755Répertoire public ou exécutableTous lisent/exécutent; propriétaire écrit
À éviter : chmod -R 777 masque souvent un problème de propriétaire et expose les fichiers en écriture à tous. Corrigez plutôt le propriétaire, le groupe et les droits minimaux nécessaires.

6. Installer et mettre à jour des logiciels

APT — Debian, Ubuntu et dérivées

APT — Debian, Ubuntu et dérivées
ActionCommandeNote
Actualiser les indexsudo apt updateNe met pas encore les paquets à niveau
Mettre à niveausudo apt upgradeLire la liste des changements proposés
Installersudo apt install htopAjoute les dépendances nécessaires
Rechercherapt search éditeurPas besoin de sudo
Afficher les détailsapt show htopVersion, dépendances, description
Supprimersudo apt remove htopConserve généralement la configuration
Purgersudo apt purge htopSupprime aussi la configuration du paquet
Nettoyersudo apt autoremoveInspecter la liste avant de confirmer

DNF — Fedora, RHEL, AlmaLinux et Rocky Linux

DNF — Fedora, RHEL, AlmaLinux et Rocky Linux
ActionCommande
Mettre à joursudo dnf upgrade --refresh
Installersudo dnf install htop
Rechercherdnf search htop
Informationsdnf info htop
Supprimersudo dnf remove htop
Historiquednf history
Annuler une transactionsudo dnf history undo 42
Nettoyer les dépendancessudo dnf autoremove

Pacman — Arch Linux et dérivées

Pacman — Arch Linux et dérivées
ActionCommandeNote
Synchroniser et mettre à niveausudo pacman -SyuÉvite les mises à niveau partielles
Installersudo pacman -S htopNom exact du paquet
Rechercher dans les dépôtspacman -Ss htopRecherche nom et description
Informations paquet installépacman -Qi htopUtiliser -Si pour un paquet distant
Supprimer avec dépendances inutilessudo pacman -Rns htopExaminer la transaction
Fichiers appartenant au paquetpacman -Ql htopListe locale

7. Processus, tâches et performances

7. Processus, tâches et performances
CommandeRôleExemple
psPhotographie des processusps aux --sort=-%mem
topSurveillance interactive standardtop
htopSurveillance interactive plus lisiblehtop
pgrepTrouve des PID par nompgrep -af nginx
pidofPID d’un programme précispidof sshd
killEnvoie un signal à un PIDkill -TERM 1234
pkillEnvoie un signal selon un motifpkill -TERM -x mon-app
niceLance avec une priorité CPU ajustéenice -n 10 ./calcul
reniceAjuste la priorité d’un processussudo renice 5 -p 1234
jobsListe les tâches du shelljobs -l
bg / fgReprend une tâche en arrière-plan / avant-planfg %1
nohupContinue après fermeture du terminalnohup ./traitement >traitement.log 2>&1 &

Commencez par TERM, qui permet au programme de se fermer proprement. N’utilisez kill -KILL qu’en dernier recours : le processus ne peut alors ni sauvegarder ni nettoyer ses ressources.

Mémoire, charge et ressources

Mémoire, charge et ressources
CommandeInformationExemple
freeMémoire vive et swapfree -h
uptimeDurée et charge moyenneuptime
vmstatCPU, mémoire, processus et E/Svmstat 1 5
iostatActivité CPU et disquesiostat -xz 1
lsofFichiers et sockets ouvertssudo lsof -iTCP:443 -sTCP:LISTEN
timeDurée et ressources d’une commandetime tar -cf archive.tar dossier/

8. Services et journaux avec systemd

8. Services et journaux avec systemd
ActionCommandeEffet
Étatsystemctl status nginxÉtat courant et derniers messages
Démarrersudo systemctl start nginxDémarre maintenant
Arrêtersudo systemctl stop nginxArrête maintenant
Redémarrersudo systemctl restart nginxInterruption puis redémarrage
Rechargersudo systemctl reload nginxRecharge si le service le supporte
Activer au démarragesudo systemctl enable nginxNe démarre pas nécessairement maintenant
Activer et démarrersudo systemctl enable --now nginxFait les deux opérations
Désactiversudo systemctl disable nginxNe l’arrête pas immédiatement
Unités en échecsystemctl --failedPoint de départ du dépannage

Journaux système

Journaux système
BesoinCommande
Messages d’un servicejournalctl -u nginx
Suivi en temps réeljournalctl -u nginx -f
Depuis le démarrage courantjournalctl -b
Démarrage précédentjournalctl -b -1
Erreurs depuis aujourd’huijournalctl -p err --since today
Période précisejournalctl --since '2026-08-01 10:00' --until '2026-08-01 11:00'
Dernières lignes sans pagerjournalctl -u nginx -n 100 --no-pager

9. Disques, espace et systèmes de fichiers

9. Disques, espace et systèmes de fichiers
CommandeRôleExemple
dfEspace utilisé par système de fichiersdf -hT
duEspace utilisé par dossiers et fichiersdu -xhd1 /var | sort -h
lsblkDisques, partitions, points de montagelsblk -f
blkidUUID et types de systèmes de fichierssudo blkid
findmntMontages sous forme structuréefindmnt /home
mountMonte un système de fichierssudo mount /dev/sdb1 /mnt/disque
umountDémonte proprementsudo umount /mnt/disque
fuserIdentifie qui utilise un montagesudo fuser -vm /mnt/disque
smartctlSanté SMART d’un disquesudo smartctl -a /dev/sda
Danger : mkfs, fdisk, parted et dd peuvent détruire irrémédiablement les données. Vérifiez le périphérique avec lsblk -f, démontez-le et possédez une sauvegarde testée avant toute écriture.

Trouver rapidement ce qui remplit un disque

df -hT
du -xhd1 /var 2>/dev/null | sort -h
sudo find /var -xdev -type f -size +500M -printf '%s %p\n' 2>/dev/null | sort -n
journalctl --disk-usage

10. Réseau, HTTP et connexions distantes

10. Réseau, HTTP et connexions distantes
CommandeRôleExemple
ipAdresses, interfaces et routesip -br addr
pingTeste la joignabilité IPping -c 4 1.1.1.1
ssPorts et connexionssudo ss -lntup
digRequête DNS détailléedig +short auxinux.ca A
resolvectlÉtat DNS avec systemd-resolvedresolvectl status
curlRequête HTTP et APIcurl -fsSIL https://auxinux.ca
wgetTélécharge un fichierwget -O fichier.iso https://example.org/fichier.iso
tracerouteChemin réseautraceroute 1.1.1.1
ncTeste un port TCPnc -vz serveur.example 443

SSH et copie distante

SSH et copie distante
BesoinCommande
Connexionssh utilisateur@serveur
Port personnaliséssh -p 2222 utilisateur@serveur
Exécuter une commande distantessh serveur 'uptime && df -h /'
Copier vers le serveurscp fichier utilisateur@serveur:/tmp/
Copier un dossierscp -r dossier utilisateur@serveur:/tmp/
Créer une clé modernessh-keygen -t ed25519 -a 100
Installer la clé publiquessh-copy-id utilisateur@serveur
Lors de la première connexion SSH, vérifiez l’empreinte de la clé hôte par un canal de confiance. N’acceptez pas aveuglément un changement de clé sur un serveur connu.

11. Archives, compression et synchronisation

11. Archives, compression et synchronisation
Format / outilCréerExtraire ou utiliser
tar.gztar -czf sauvegarde.tar.gz dossier/tar -xzf sauvegarde.tar.gz
tar.xztar -cJf sauvegarde.tar.xz dossier/tar -xJf sauvegarde.tar.xz
zipzip -r sauvegarde.zip dossier/unzip sauvegarde.zip
gzipgzip fichier.loggunzip fichier.log.gz
rsyncrsync -aHAX --info=progress2 source/ destination/Synchronise et ne retransfère que les différences
sha256sumsha256sum fichier.iso > fichier.iso.sha256sha256sum -c fichier.iso.sha256
Archive non fiable : inspectez-la avec tar -tzf archive.tar.gz ou unzip -l archive.zip avant extraction. Extrayez-la ensuite dans un répertoire vide dédié, par exemple avec mkdir extraction && tar -xzf archive.tar.gz -C extraction/. Une archive malveillante peut contenir des chemins conçus pour écraser des fichiers hors du dossier attendu.

Avec rsync, la barre finale est importante : source/ signifie « le contenu de source », tandis que source inclut le dossier lui-même. Testez une suppression miroir avec --dry-run avant d’ajouter --delete.

12. Redirections, pipes et composition

12. Redirections, pipes et composition
OpérateurEffetExemple
>Écrit la sortie en remplaçant le fichierdate > execution.txt
>>Ajoute à la findate >> historique.txt
2>Redirige les erreurscommande 2> erreurs.log
>fichier 2>&1Regroupe sortie et erreurscommande > tout.log 2>&1
|Envoie la sortie à une autre commandejournalctl -b | grep -i error
teeAffiche et écrit simultanémentcommande | tee resultat.log
&&Exécute la suite seulement si succèsmkdir build && cd build
||Exécute la suite seulement si échectest -f config || echo 'absent'
xargsConstruit des arguments depuis l’entréefind . -maxdepth 1 -type f -name '*.log' -print0 | xargs -0 -r -- gzip --

Pipes pratiques

# Dix processus consommant le plus de mémoire
ps aux --sort=-%mem | head -n 11

# Adresses IP les plus fréquentes dans un journal web
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

# Taille des dossiers du répertoire courant
du -sh -- * 2>/dev/null | sort -h

# Conserver une trace tout en regardant la sortie
journalctl -u nginx -f | tee -a suivi-nginx.log

13. Commandes avancées et diagnostic

Ces outils expliquent pourquoi un programme, un service ou un système se comporte mal. Utilisez-les après avoir formulé une hypothèse et notez l’heure exacte du problème.

13. Commandes avancées et diagnostic
CommandeDiagnosticExemple
dmesgMessages du noyausudo dmesg -T --level=err,warn
lsofProcessus utilisant un fichier ou portsudo lsof /var/log/app.log
straceAppels système d’un programmestrace -f -o trace.log commande
lddBibliothèques dynamiques requisesldd /usr/bin/curl
readelfStructure d’un binaire ELFreadelf -h programme
envVariables d’environnementenv | sort
ulimitLimites du shell et des processusulimit -a
watchRépète une commandewatch -n 2 'df -h /'
timeoutLimite la duréetimeout 30s commande
flockEmpêche deux exécutions simultanéesflock -n /tmp/tache.lock ./tache.sh

Méthode de diagnostic reproductible

  1. Définir le symptôme : commande exacte, message complet, heure, fréquence.
  2. Vérifier l’état : systemctl status, df -h, free -h, ss -lntup.
  3. Lire les journaux : filtrer l’unité et la plage horaire avec journalctl.
  4. Comparer : configuration récente, paquet mis à jour, port ou permission modifié.
  5. Tester une seule hypothèse : changer un élément, mesurer, puis revenir en arrière si nécessaire.
  6. Documenter : cause racine, correction et moyen de vérifier.

14. Shell Bash et automatisation

Variables, citations et expansions

Variables, citations et expansions
FormeComportementExemple
nom=valeurVariable du shell, sans espaces autour de =dossier=/var/log
"$nom"Développe la variable tout en protégeant les espacescp -- "$fichier" sauvegarde/
'texte'Texte littéral sans expansionprintf '%s\n' '$HOME'
$(commande)Capture la sortie d’une commandedate_iso=$(date +%F)
${nom:-defaut}Valeur par défaut si vide ou absenteport=${PORT:-8080}
$?Code de sortie précédent, 0 signifie succèscommande; printf '%s\n' "$?"

Squelette de script robuste

#!/usr/bin/env bash
set -Eeuo pipefail

usage() {
  echo "Usage: $0 <répertoire>" >&2
  exit 2
}

[[ $# -eq 1 ]] || usage
source_dir=$1
[[ -d "$source_dir" ]] || { echo "Répertoire introuvable: $source_dir" >&2; exit 1; }

destination="$HOME/sauvegardes/$(date +%F-%H%M%S)"
mkdir -p -- "$destination"
rsync -a -- "$source_dir/" "$destination/"
printf 'Sauvegarde terminée: %s\n' "$destination"

Rendez-le exécutable avec chmod u+x sauvegarde.sh, puis lancez-le avec ./sauvegarde.sh ~/Documents. Analysez vos scripts avec shellcheck sauvegarde.sh lorsqu’il est disponible.

Planification

Planification
OutilUsageExemple
atExécution unique différéeecho '/home/alice/tache.sh' | at 23:00
crontabPlanification récurrente classiquecrontab -e
systemd timerPlanification moderne avec journal et dépendancessystemctl list-timers --all

15. Sécurité et commandes dangereuses

15. Sécurité et commandes dangereuses
RisquePourquoiAlternative ou précaution
rm -rf avec variables non citéesUne variable vide ou contenant des espaces peut élargir la suppressionValider le chemin, utiliser -- et citer : rm -rf -- "$cible"
curl ... | shExécute immédiatement du code distant non inspectéTélécharger, vérifier signature/hash, lire, puis exécuter
chmod -R 777Autorise tous les utilisateurs à modifierCorriger chown, groupe et droits minimaux
dd vers un disqueÉcrase les blocs sans confirmationVérifier trois fois lsblk et la destination
mkfsRecrée un système de fichiersSauvegarde vérifiée et périphérique démonté
kill -9Empêche tout nettoyage du processusEssayer d’abord kill -TERM
Secrets dans l’historiqueTokens et mots de passe persistent dans ~/.bash_historyUtiliser un gestionnaire de secrets ou une saisie interactive
Modification directe de /etc/sudoersUne erreur peut bloquer sudoUtiliser sudo visudo

Réflexes recommandés

  • Utiliser le compte normal et élever uniquement la commande nécessaire avec sudo.
  • Préférer les chemins absolus dans les scripts d’administration.
  • Ajouter -- avant des noms de fichiers qui pourraient commencer par un tiret.
  • Employer --dry-run, -n ou un affichage préalable lorsque l’outil le permet.
  • Conserver une sauvegarde restaurable avant toute modification de disque ou de configuration distante.

16. Recettes pratiques

Diagnostiquer un service qui ne démarre pas

service=nginx
systemctl status "$service" --no-pager
journalctl -u "$service" -b -n 100 --no-pager
systemctl cat "$service"
sudo "$service" -t 2>/dev/null || true
sudo ss -lntup

La commande de validation dépend du service : pour Nginx, utilisez sudo nginx -t; pour SSH sur Debian, sudo sshd -t. Ne redémarrez qu’après une validation réussie.

Distinguer réseau, DNS et HTTP

ip -br addr
ip route
ping -c 3 1.1.1.1
dig +short auxinux.ca
curl -fsSIL --max-time 10 https://auxinux.ca
sudo ss -lntup

Analyser un manque d’espace

df -hT
df -ih
du -xhd1 /var 2>/dev/null | sort -h
journalctl --disk-usage
sudo lsof +L1

lsof +L1 révèle les fichiers supprimés encore ouverts : leur espace ne sera libéré qu’après fermeture ou redémarrage propre du processus concerné.

Synchroniser avec aperçu préalable

# Aperçu sans modification
rsync -aHAXvn --delete source/ destination/

# Après vérification attentive de l’aperçu
rsync -aHAXv --delete source/ destination/

17. Aide-mémoire essentiel

17. Aide-mémoire essentiel
Je veux…Commande recommandée
Savoir où je suispwd
Lister clairementls -lah
Changer de dossiercd chemin
Voir les gros dossiersdu -xhd1 . | sort -h
Voir l’espace disquedf -hT
Voir la mémoirefree -h
Voir les processusps aux --sort=-%cpu | head ou htop
Chercher un fichierfind . -type f -iname '*nom*'
Chercher dans des fichiersrg -ni 'motif' chemin/
Suivre un journaljournalctl -u service -f
Voir les ports ouvertssudo ss -lntup
Tester une URLcurl -fsSIL URL
Tester le DNSdig +short domaine A
Créer une archivetar -czf archive.tar.gz dossier/
Vérifier un téléchargementsha256sum -c fichier.sha256
Copier à distancescp fichier utilisateur@serveur:/chemin/
Synchroniserrsync -aHAX --info=progress2 source/ destination/
Voir l’état d’un servicesystemctl status service
Modifier des permissionschmod u+x script.sh
Obtenir de l’aidecommande --help, man commande ou tldr commande

Pour progresser : choisissez une tâche réelle, exécutez d’abord les commandes d’observation, consultez le manuel, puis modifiez une seule chose à la fois. Le terminal devient puissant lorsque chaque commande est comprise, vérifiable et reproductible.