SHELL : Guide des commandes les plus usuelles et commandes couteau suisse

17 juin 2026 — par admin_libra

Le shell Linux est bien plus qu’un simple interpréteur de commandes : c’est un environnement de travail complet qui permet d’accomplir en quelques secondes des tâches qui nécessiteraient des heures à travers une interface graphique. Que vous soyez administrateur système, développeur ou simple utilisateur avancé sur Debian ou Ubuntu, maîtriser les commandes shell essentielles est une compétence fondamentale.

Ce guide répertorie les commandes les plus fréquemment utilisées au quotidien, organisées par catégorie, accompagnées d’exemples concrets et de combinaisons « couteau suisse » particulièrement puissantes. L’objectif n’est pas l’exhaustivité encyclopédique, mais la praticité : des commandes que vous utiliserez dès demain.

Toutes les commandes présentées ici ont été testées sur Debian 12 (Bookworm) et Ubuntu 24.04 LTS. Les paquets nécessaires sont disponibles via apt sans configuration de dépôts tiers.

Navigation et gestion des fichiers

La navigation dans l’arborescence et la manipulation des fichiers constituent le socle quotidien de tout travail en ligne de commande.

ls, cd, pwd — se repérer dans l’arborescence

# Lister avec détails et fichiers cachés, taille lisible
ls -lah /var/log

# Afficher le chemin absolu courant
pwd

# Revenir au répertoire précédent
cd -

find — localiser des fichiers

find est l’une des commandes les plus puissantes du shell. Elle traverse l’arborescence et applique des critères de filtre très précis.

# Trouver tous les fichiers .log modifiés il y a moins de 2 jours
find /var/log -name "*.log" -mtime -2

# Trouver les fichiers volumineux (> 100 Mo)
find /home -type f -size +100M

# Trouver et supprimer les fichiers .tmp de plus de 7 jours
find /tmp -name "*.tmp" -mtime +7 -exec rm -f {} ;

# Trouver les fichiers appartenant à un utilisateur
find /var/www -user www-data -type f

# Recherche insensible à la casse
find /etc -iname "nginx.conf"

cp, mv, rm — copier, déplacer, supprimer

# Copie récursive avec préservation des attributs
cp -av /source/ /destination/

# Déplacer en renommant
mv ancien_nom.conf nouveau_nom.conf

# Supprimer récursivement sans confirmation
rm -rf /tmp/dossier_temporaire/

# Création récursive de répertoires
mkdir -p /opt/app/{bin,conf,logs,data}

Recherche et filtrage de texte

grep — chercher dans le contenu

grep (Global Regular Expression Print) est indispensable pour rechercher des motifs dans des fichiers ou des flux.

# Recherche récursive insensible à la casse, affiche le numéro de ligne
grep -rin "error" /var/log/nginx/

# Afficher les lignes qui NE contiennent PAS le motif
grep -v "DEBUG" /var/log/app.log

# Compter les occurrences
grep -c "Failed password" /var/log/auth.log

# Afficher N lignes de contexte avant/après
grep -A 3 -B 2 "CRITICAL" /var/log/syslog

# Utiliser une expression régulière étendue
grep -E "^(ERROR|WARN)" /var/log/app.log

# Lister uniquement les noms de fichiers contenant le motif
grep -rl "password" /etc/

sed — édition de flux

sed (Stream EDitor) permet de transformer du texte à la volée, sans ouvrir d’éditeur.

# Remplacer toutes les occurrences (flag g) dans un fichier, en place
sed -i 's/ancien_texte/nouveau_texte/g' fichier.conf

# Supprimer les lignes vides
sed '/^$/d' fichier.txt

# Supprimer les commentaires (lignes commençant par #)
sed '/^#/d' fichier.conf

# Afficher uniquement les lignes 10 à 20
sed -n '10,20p' fichier.log

# Insérer une ligne après un motif
sed '/motif/aNouvelle ligne insérée' fichier.txt

awk — traitement de données structurées

awk est un langage complet orienté colonnes, idéal pour traiter des fichiers CSV, des logs ou toute sortie tabulaire.

# Afficher la 1ère et 3ème colonne (séparateur espace par défaut)
awk '{print $1, $3}' fichier.txt

# Utiliser un séparateur personnalisé (ici ":")
awk -F: '{print $1, $3}' /etc/passwd

# Filtrer les lignes où la 5e colonne dépasse 1000
awk '$5 > 1000 {print $0}' rapport.csv

# Calculer la somme d'une colonne
awk '{sum += $2} END {print "Total:", sum}' factures.txt

# Afficher les 5 premières lignes d'un fichier
awk 'NR <= 5' fichier.log

Manipulation et tri de données

sort, uniq — trier et dédoublonner

# Trier un fichier et supprimer les doublons
sort fichier.txt | uniq

# Trier numériquement, en ordre décroissant
sort -rn nombres.txt

# Compter les occurrences (fréquence d'apparition)
sort fichier.txt | uniq -c | sort -rn

# Trier par la 3e colonne
sort -k3 tableau.txt

cut — extraire des colonnes

# Extraire les champs 1 et 3 séparés par ":"
cut -d: -f1,3 /etc/passwd

# Extraire les 10 premiers caractères de chaque ligne
cut -c1-10 fichier.txt

xargs — construire et exécuter des commandes

xargs lit des arguments sur l’entrée standard et les passe à une commande. C’est le ciment qui permet de chaîner des commandes.

# Supprimer tous les fichiers trouvés par find
find /tmp -name "*.tmp" | xargs rm -f

# Lancer grep sur tous les fichiers Python d'un projet
find . -name "*.py" | xargs grep -l "import os"

# Copier une liste de fichiers vers un répertoire
cat liste_fichiers.txt | xargs -I{} cp {} /backup/

# Paralléliser sur 4 processus
cat urls.txt | xargs -P 4 -I{} curl -O {}

Surveillance des processus et des ressources

ps, top, kill — gérer les processus

# Afficher tous les processus avec détails
ps aux

# Afficher l'arbre des processus
ps axjf

# Trouver le PID d'un processus par nom
pgrep nginx

# Tuer un processus par nom
pkill -9 nom_processus

# Surveillance interactive
top
htop   # version améliorée (apt install htop)

df, du — occupation disque

# Espace disponible sur les partitions (lisible)
df -h

# Identifier les répertoires les plus lourds
du -sh /var/* | sort -rh | head -10

# Taille d'un répertoire spécifique
du -sh /var/www/html/

Combinaisons couteau suisse

La vraie puissance du shell réside dans la composition de commandes via les pipes (|). Voici des combinaisons prêtes à l’emploi.

Top 10 des IP dans les logs Nginx

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

Compter les erreurs 5xx dans un access log

grep -oP '"[A-Z]+ [^"]+" 5d{2}' /var/log/nginx/access.log | sort | uniq -c | sort -rn

Identifier les tentatives SSH échouées

grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn | head -20

Surveiller un fichier de log en temps réel avec filtre

tail -f /var/log/syslog | grep --line-buffered "error|warn|crit"

Remplacer récursivement une chaîne dans tous les fichiers d’un projet

grep -rl "ancienne_valeur" /var/www/html/ | xargs sed -i 's/ancienne_valeur/nouvelle_valeur/g'

Archiver et transférer en une seule ligne

# Compresser à la volée et transférer via SSH sans fichier intermédiaire
tar czf - /var/www/html/ | ssh user@serveur-distant "cat > /backup/html_$(date +%Y%m%d).tar.gz"

Lister les ports en écoute avec le processus associé

ss -tlnp | awk 'NR>1 {print $4, $6}' | column -t

Raccourcis et productivité shell

# Répéter la dernière commande avec sudo
sudo !!

# Rechercher dans l'historique des commandes (interactif)
Ctrl+R  # puis taper le début de la commande

# Exécuter la dernière commande commençant par "grep"
!grep

# Substitution rapide dans la dernière commande
^ancien^nouveau

# Rediriger stdout ET stderr vers un fichier
commande &> /tmp/sortie.log

# Exécuter en arrière-plan et détacher du terminal
nohup commande &> /tmp/sortie.log &

À lire également

Références

Index complet

Tous les articles (46)

Date Article Tags
17/06/2026 APT : Guide complet de la gestion des paquets sous Debian et Ubuntu administration apt debian 17/06/2026 SHELL : Guide des commandes les plus usuelles et commandes couteau suisse awk bash commandes 17/06/2026 SUDO : implémentation et sécurisation des accès sur Debian/Ubuntu administration audit authentification 17/06/2026 ProFTPd : authentification MySQL centralisée, FTPs (SSL) et SFTP sur Debian/Ubuntu authentification debian ftp 09/06/2026 Fail2ban — configuration avancée et filtres personnalisés bruteforce debian fail2ban 07/06/2026 Docker : comment récupérer de l'espace disque cache conteneurs debian 07/06/2026 Graylog 7 — Centralisation et analyse de logs : l'alternative à ELK sur Debian/Ubuntu centralisation debian elk 07/06/2026 OpenZFS : tiering avec L2ARC et SLOG pour les workloads mixtes cache l2arc nvme 07/06/2026 Scripting Bash avancé — pièges, bonnes pratiques et optimisation automatisation bash bonnes-pratiques 07/06/2026 AppArmor sur Debian/Ubuntu : profils, modes et confinement applicatif apparmor audit confinement 07/06/2026 Durcissement SSH — au-delà des clés publiques 2fa authentification cryptographie 27/05/2026 LXD 6.x : orchestration de conteneurs Linux avec profils et clustering administration clustering conteneurs 27/05/2026 Keepalived — VIP flottante et load balancing sans matériel dédié debian failover haute-disponibilité 27/05/2026 Btrfs sur Linux — snapshots, sous-volumes et compression en pratique administration btrfs compression 21/05/2026 CVE-2026-42945 (NGINX Rift) : analyse et remédiation sur Debian/Ubuntu cve debian heap-overflow 21/05/2026 Tuning kernel Linux — paramètres sysctl essentiels pour la production debian kernel mémoire 21/05/2026 DRBD : réplication de blocs entre deux serveurs en temps réel cluster debian drbd 15/05/2026 CVE-2026-23918 — vulnérabilité Apache 2.4.66 : analyse et correctifs sur Debian/Ubuntu (hors Debian 11) apache cve debian 15/05/2026 CVE-2026-31431 (Copy Fail) — Analyse et remédiation sur Debian/Ubuntu algif_aead copy-fail cve 12/05/2026 Pacemaker et Corosync — cluster haute disponibilité Linux cluster corosync debian 12/05/2026 WireGuard : monter un VPN mesh entre plusieurs serveurs Linux chiffrement linux mesh 12/05/2026 Netdata — monitoring temps réel sans configuration complexe alertes dashboard linux 12/05/2026 nftables en pratique — remplacer iptables sur Debian/Ubuntu debian firewall iptables 12/05/2026 Podman : alternative rootless à Docker — installation et migration conteneurs docker kubernetes 02/05/2026 Prometheus et Grafana sur Debian — installation, configuration et dashboards pratiques alertmanager dashboard debian 02/05/2026 Ansible : automatiser la gestion de serveurs Linux avec des playbooks administration ansible automation 28/04/2026 ZFS sur Linux : snapshots, clones et RAID-Z en pratique administration compression filesystem 28/04/2026 eBPF sur Linux : observabilité et traçage kernel avec bpftrace et BCC bcc bpftrace diagnostic 23/04/2026 Analyse de la mémoire sur Linux — vmstat, free, smem diagnostic mémoire monitoring 23/04/2026 Sécurité Linux — Firewall iptables et nftables firewall iptables nftables 23/04/2026 ZFS sur Linux — Installation et gestion avancée administration filesystem stockage 23/04/2026 Gestion des services avec systemd sur Debian et Ubuntu administration debian services 23/04/2026 Gestion des ressources cgroups v1/v2 avec LXC cgroups conteneurs lxc 23/04/2026 Centralisation logs avec ELK Stack — Elasticsearch, Kibana, Filebeat elasticsearch elk filebeat 23/04/2026 Supervision avec Zabbix 7.0 LTS sur Debian/Ubuntu debian monitoring supervision 23/04/2026 Plusieurs versions PHP-FPM sur Apache Debian/Ubuntu apache debian php-fpm 23/04/2026 Sécurisation avancée PHP-FPM — Multi-VirtualHosts Apache/Nginx apache nginx php-fpm 23/04/2026 Optimisation PHP-FPM — Guide de tuning d'un pool optimisation performance php-fpm 29/07/2025 Docker sur Debian/Ubuntu : Installation, Configuration et Utilisation conteneurs debian docker 03/07/2025 Serveur VPN WireGuard sous linux réseau sécurité vpn 03/07/2025 Authentification par clé publique sur un serveur SSH authentification cryptographie sécurité 27/06/2025 Surveillance et diagnostic d’un serveur Linux avec vmstat, iotop et htop diagnostic htop monitoring 27/06/2025 Mémoire : Utilisation des Huge Pages et implémentation hugepages mémoire noyau 27/06/2025 Mémoire Swap et paramétrage swappiness mémoire noyau performance 18/06/2025 Installation et Configuration des Conteneurs LXC sur Linux administration conteneurs lxc 18/06/2025 Gestion des journaux avec syslog et journalctl administration journalctl logs