// aide-mémoire

Les commandes
qu'on oublie toujours.

Tape ce que tu cherches en français — « chercher texte », « monter clé usb », « annuler commit » — la commande remonte.

wsl -l -v

Affiche chaque distribution avec son état et sa version WSL. L'astérisque marque la distribution par défaut — celle qui démarre quand on tape wsl sans rien préciser.

  • -l lister
  • -v état et version
wsl -d Ubuntu

Démarre la distribution demandée sans toucher au réglage par défaut. Utile quand un simple wsl ouvre docker-desktop, une distribution technique interne à Docker Desktop où l'on ne retrouve ni ses projets ni sa configuration de terminal.

  • -d nom de la distribution
wsl --set-default Ubuntu

Après ça, un simple wsl ouvre directement la bonne distribution. Le correctif durable au piège de docker-desktop.

wsl --shutdown

Coupe la machine virtuelle WSL entière. Le redémarrage propre à tenter quand une distribution se comporte mal ou qu'un montage reste bloqué.

explorer.exe .

Depuis un terminal WSL, ouvre l'emplacement courant dans l'explorateur de fichiers Windows. Le point final désigne le dossier courant.

ls -lah

Affiche tous les fichiers, y compris les cachés, avec les permissions et des tailles lisibles.

  • -l format détaillé
  • -a inclut les fichiers cachés
  • -h tailles lisibles (Ko, Mo)
cd -

Bascule vers le dernier dossier visité. Pratique pour faire des allers-retours entre deux emplacements.

cp -r source/ destination/

Copie récursive. Sans l'option -r, les dossiers sont ignorés.

  • -r récursif
  • -v affiche chaque fichier copié
  • -n n'écrase jamais un fichier existant
mv ancien nouveau

La même commande sert aux deux usages : renommer, c'est déplacer vers un autre nom dans le même dossier.

  • -i demande confirmation avant d'écraser
ln -s /chemin/cible nom_du_lien

Crée un raccourci vers un fichier ou un dossier. Utilise toujours un chemin absolu pour la cible, sinon le lien casse dès qu'on le déplace.

  • -s lien symbolique (sinon lien physique)
tree -L 2

Vue hiérarchique du dossier, limitée à deux niveaux de profondeur. Le paquet tree n'est pas toujours installé par défaut.

  • -L n profondeur maximale
  • -d dossiers uniquement

chmod 644 fichier

Lecture et écriture pour le propriétaire, lecture seule pour les autres. Valeur habituelle pour un fichier de contenu.

  • 755 valeur habituelle pour un dossier ou un exécutable
  • -R récursif
chmod +x script.sh

Ajoute le droit d'exécution sans toucher aux autres permissions.

chown utilisateur:groupe fichier

Réattribue un fichier à un utilisateur et un groupe. Nécessite les droits administrateur.

  • -R récursif
ls -ld dossier

Sans -d, la commande liste le contenu du dossier au lieu d'afficher le dossier lui-même.

  • -d le dossier, pas son contenu

lsblk -f

Affiche les périphériques de stockage avec leur système de fichiers et leur point de montage. Le premier réflexe avant de monter quoi que ce soit.

  • -f système de fichiers et UUID
sudo mount /dev/sdb1 /mnt/usb

Rend le contenu d'une partition accessible dans un dossier. Le dossier de destination doit exister au préalable.

  • -o ro montage en lecture seule
sudo umount /mnt/usb

À faire avant de débrancher un support. Si la commande refuse, c'est qu'un processus utilise encore le montage — souvent un terminal ouvert dans le dossier.

df -h

Espace utilisé et libre par système de fichiers, en unités lisibles.

  • -h tailles lisibles
  • -i inodes au lieu des octets
du -sh *

Taille totale de chaque élément du dossier courant. Le moyen le plus direct de trouver ce qui remplit un disque.

  • -s total par élément, sans le détail
  • -h tailles lisibles

ps aux | grep nom_du_processus

Liste tous les processus et filtre sur un nom. La colonne de gauche donne le PID nécessaire pour l'arrêter.

kill -9 PID

Terminaison immédiate, sans laisser au programme le temps de se fermer proprement. À réserver aux cas où un kill simple ne suffit pas.

  • -9 signal KILL, non interceptable
  • -15 signal TERM, arrêt propre (défaut)
sudo systemctl status nginx

Affiche si le service tourne, depuis quand, et les dernières lignes de son journal.

  • start démarrer le service
  • restart redémarrer le service
  • enable activer au démarrage
journalctl -u nginx -f

Affiche le journal d'un service et continue à l'afficher au fil de l'eau. La commande à lancer quand on cherche pourquoi quelque chose échoue.

  • -u filtre sur une unité systemd
  • -f suit en temps réel
  • -n 50 les 50 dernières lignes

ssh utilisateur@serveur

Ouvre une session distante. Avec -p, on précise un port différent du 22 par défaut.

  • -p port personnalisé
  • -i clé privée à utiliser
scp fichier utilisateur@serveur:/chemin/

Transfert via SSH. Pour récupérer un fichier depuis le serveur, on inverse simplement les deux arguments.

  • -r dossier complet
ss -tulpn

Liste les ports en écoute avec le processus associé. Remplace netstat, désormais obsolète sur la plupart des distributions.

  • -t TCP
  • -l en écoute
  • -p processus associé
curl -I https://exemple.ch

Récupère uniquement les en-têtes HTTP. Le moyen le plus rapide de vérifier un code de réponse ou une redirection.

  • -I en-têtes seulement
  • -L suit les redirections
  • -o fichier enregistre la réponse

sudo apt update && sudo apt upgrade

La première commande rafraîchit la liste des paquets disponibles, la seconde installe les mises à jour. L'une sans l'autre ne sert à rien.

sudo apt install nom_du_paquet

Installe le paquet et ses dépendances depuis les dépôts configurés.

  • -y répond oui automatiquement
apt search motif

Recherche dans les noms et descriptions des paquets des dépôts.

apt list --installed | grep motif

Filtre la liste des paquets installés sur un motif.

tar -czf archive.tar.gz dossier/

Crée une archive gzip d'un dossier. Moyen mnémotechnique : c pour créer, z pour compresser, f pour fichier.

  • -c créer
  • -z compression gzip
  • -f nom du fichier de sortie
  • -v affiche les fichiers traités
tar -xzf archive.tar.gz

Décompresse dans le dossier courant. Avec -C, on choisit une destination différente.

  • -x extraire
  • -C dossier destination
tar -tzf archive.tar.gz

Affiche ce que contient l'archive sans rien extraire. Le réflexe à avoir avant de décompresser une archive inconnue.

  • -t lister
unzip archive.zip -d destination/

Décompresse une archive ZIP dans un dossier donné.

  • -l liste sans extraire
  • -d dossier de destination

python3 -m venv .venv

Crée un environnement isolé dans un dossier .venv à la racine du projet. À exclure du dépôt Git.

source .venv/bin/activate

Le nom de l'environnement apparaît alors entre parenthèses dans l'invite. Sous Windows, la commande est .venv\Scripts\activate.

deactivate

Revient à l'interpréteur système. Aucun chemin à préciser.

pip install -r requirements.txt

Installe toutes les bibliothèques listées dans le fichier. À lancer après avoir activé l'environnement virtuel.

pip freeze > requirements.txt

Écrit la liste des bibliothèques et leurs versions exactes dans le fichier. À refaire à chaque ajout de dépendance.

python3 -m http.server 8000

Sert le dossier courant sur le port 8000. Pratique pour tester rapidement des fichiers statiques.

git stash

Range les changements en cours pour retrouver un dossier propre. On les récupère ensuite avec git stash pop.

  • pop récupère et retire de la pile
  • list liste les remisages
git log --oneline --graph --all

Historique compact sous forme de graphe, toutes branches confondues. La façon la plus lisible de comprendre où on en est.

  • -n 10 limite aux 10 derniers commits
git restore fichier

Rétablit le fichier tel qu'il était au dernier commit. Les modifications non validées sont perdues définitivement.

  • --staged retire du index sans perdre les modifications
git reset --soft HEAD~1

Supprime le commit mais conserve les modifications dans le dossier de travail. Avec --hard, les modifications sont perdues.

  • --soft conserve les modifications
  • --hard supprime tout, irréversible
git diff --staged

Affiche les différences déjà ajoutées à l'index. Sans l'option, on voit au contraire ce qui n'y est pas encore.

git remote -v

Affiche les URL de récupération et d'envoi configurées.

date('d.m.Y')

Renvoie la date courante selon le format donné. Les lettres du format sont sensibles à la casse : d n'est pas D.

  • d jour sur 2 chiffres (01-31)
  • m mois sur 2 chiffres (01-12)
  • Y année sur 4 chiffres
  • y année sur 2 chiffres
  • H heure 24h sur 2 chiffres
  • i minutes sur 2 chiffres
  • s secondes sur 2 chiffres
  • N jour de la semaine, 1 = lundi
  • t nombre de jours dans le mois
  • L 1 si année bissextile
date('Y-m-d H:i:s')

Le format attendu par les colonnes DATETIME de MySQL et MariaDB. À utiliser tel quel, sans inverser l'ordre.

$date = new DateTime('2026-08-05');
echo $date->format('d.m.Y');

DateTime accepte une date au format ISO, puis format() applique les mêmes lettres que date(). C'est l'approche à préférer dès qu'on manipule autre chose que l'instant présent.

$date = DateTime::createFromFormat('d.m.Y', '05.08.2026');

Indispensable quand la date vient d'un formulaire ou d'un fichier : sans cette méthode, PHP interprète 05.08.2026 de travers ou échoue.

  • 1er argument format de la chaîne lue
  • 2e argument la chaîne à interpréter

$debut = new DateTime('2026-01-15');
$fin   = new DateTime('2026-08-05');
$jours = $debut->diff($fin)->days;

diff() renvoie un DateInterval. La propriété days donne le total absolu ; d ne donnerait que le reste après les mois entiers.

  • ->days total de jours
  • ->y ->m ->d années, mois, jours séparés
  • ->invert 1 si la seconde date est antérieure
$date = new DateTime();
$date->modify('+3 months');

modify() accepte une expression en anglais. Attention : ajouter un mois au 31 janvier donne le 3 mars, PHP ne ramène pas au dernier jour du mois.

  • +7 days dans une semaine
  • -1 month le mois dernier
  • first day of next month 1er du mois prochain
  • last day of this month dernier jour du mois
strtotime('+3 days')

Renvoie un entier Unix, pas un objet. Pratique pour un calcul rapide, mais DateTime reste plus lisible dès que le code grandit.

if ($date1 < $date2) {
    // date1 est antérieure
}

Les objets DateTime se comparent directement avec les opérateurs habituels. Inutile de passer par des timestamps.

number_format($n, 2, '.', "'")

Les séparateurs suisses : apostrophe pour les milliers, point pour les décimales. Donne 12'345.60 pour 12345.6.

  • 1er le nombre
  • 2e nombre de décimales
  • 3e séparateur décimal
  • 4e séparateur des milliers
htmlspecialchars($texte, ENT_QUOTES, 'UTF-8')

À appliquer à toute donnée venant de l'extérieur avant de l'insérer dans du HTML. ENT_QUOTES traite aussi les apostrophes, ce que le réglage par défaut ne fait pas.

  • ENT_QUOTES guillemets doubles et simples
  • 'UTF-8' encodage, à préciser explicitement
$noms = array_map(function ($ligne) {
    return $ligne['nom'];
}, $lignes);

array_map applique la fonction à chaque élément et renvoie le tableau des résultats. Pour ce cas précis, array_column($lignes, 'nom') fait la même chose en plus court.

usort($lignes, function ($a, $b) {
    return $a['date'] <=> $b['date'];
});

usort trie sur place et renumérote les clés. L'opérateur <=> renvoie -1, 0 ou 1 selon l'ordre — il évite d'écrire la comparaison à la main.

  • $a <=> $b ordre croissant
  • $b <=> $a ordre décroissant
json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)

Sans ces options, les accents sortent en séquences d'échappement et tout tient sur une seule ligne — illisible dès qu'on doit relire le fichier.

  • JSON_UNESCAPED_UNICODE garde les accents tels quels
  • JSON_PRETTY_PRINT indentation lisible
  • JSON_UNESCAPED_SLASHES n'échappe pas les barres obliques