Aide-mémoire Linux
Commandes terminal, bash, pipes et one-liners
Navigation
Liste le contenu d'un répertoire avec permissions, taille et date.
ls -la /var/log
Change le répertoire courant. Sans argument va au home.
cd /etc/nginx cd ~ cd - cd ..
Affiche le chemin complet du répertoire courant.
pwd
Affiche l'arborescence du répertoire en format visuel.
tree -L 2 ~/projects
Identifie le type d'un fichier (texte, binaire, image, script, etc).
file image.png file -i script.sh
Affiche les métadonnées détaillées d'un fichier (taille, inode, dates, permissions).
stat file.txt stat -c "%n %s %y" file.txt
Fichiers
Crée un fichier vide ou met à jour la date de modification.
touch newfile.txt touch -t 202601011200 file.txt
Crée un répertoire. Avec -p crée toute la structure de parents manquants.
mkdir -p projects/app/src mkdir -m 700 secret
Supprime un répertoire vide.
rmdir empty_dir rmdir -p a/b/c
Supprime fichiers ou répertoires. Avec -rf supprime récursivement sans confirmer (dangereux).
rm file.txt rm -rf node_modules
Copie fichiers ou répertoires.
cp file.txt backup.txt cp -r src/ dest/
Déplace ou renomme fichiers et répertoires.
mv old.txt new.txt mv *.log archive/
Crée des liens: -s pour symbolique, sans flag pour hard link.
ln -s /usr/local/bin/node ~/node ln file hardlink
Imprime le contenu d'un ou plusieurs fichiers vers stdout.
cat file.txt cat -n script.sh
Visualise les fichiers page par page avec navigation. Recherche avec /. +F suit comme tail -f.
less /var/log/syslog less +F app.log
Affiche les premières N lignes d'un fichier (défaut: 10).
head -n 20 file.txt head -c 1024 binary
Affiche les dernières N lignes. -f suit le fichier au fur et à mesure qu'il grandit.
tail -n 50 access.log tail -f /var/log/syslog
Compte lignes (-l), mots (-w), octets (-c) ou caractères (-m).
wc -l file.txt wc *.md
Permissions
Modifie les permissions (rwx) des fichiers et répertoires.
chmod 755 script.sh chmod +x deploy.sh chmod -R 644 docs/
Modifie le propriétaire et/ou le groupe des fichiers.
chown user file.txt chown -R www-data:www-data /var/www
Exécute une commande en tant qu'un autre utilisateur (root par défaut).
sudo apt update sudo -u postgres psql sudo -i
Bascule vers un autre utilisateur. - charge l'environnement de cet utilisateur.
su - postgres su -c 'whoami' root
Crée (useradd) ou supprime (userdel) des comptes utilisateur.
sudo useradd -m -s /bin/bash john sudo userdel -r john
Définit ou change le mot de passe d'un utilisateur.
passwd sudo passwd john
Affiche l'utilisateur courant (whoami) ou tous les utilisateurs connectés (who).
whoami who who -a
Affiche l'UID, le GID et les groupes de l'utilisateur courant.
id id -nG groups
Processus
Liste les processus. aux affiche tous les processus en détail.
ps aux ps -ef
Affiche les processus en temps réel, triés par utilisation de CPU/mémoire.
top top -u www-data top -p 1234
Envoie un signal à un processus par PID. -9 force la terminaison (SIGKILL).
kill 1234 kill -9 1234 kill -HUP $(pidof nginx)
Tue les processus par nom (killall) ou motif (pkill).
killall firefox pkill -9 -f node pkill -u john
Gère les jobs du shell: jobs liste, fg ramène au foreground, bg reprend en background.
jobs fg %1 bg %2 # Ctrl+Z to suspend the foreground job
Lance une commande qui continue même après la fermeture du terminal.
nohup ./long-task.sh > out.log 2>&1 & nohup python script.py &
Démarre un processus avec priorité ajustée (nice) ou change la priorité (renice).
nice -n 19 ./heavy.sh renice -n 5 -p 1234
Ajouter & à la fin d'une commande la lance en background, libérant le terminal.
./server.sh & long-task & disown %1
Réseau
Teste la connectivité en envoyant des paquets ICMP. -c limite le nombre.
ping google.com ping -c 4 8.8.8.8
Effectue des requêtes HTTP/HTTPS et télécharge des fichiers. Supporte GET, POST, headers, authentification.
curl https://api.github.com
curl -X POST -H "Content-Type: application/json" -d '{"a":1}' url
curl -O https://example.com/file.zipTélécharge des fichiers via HTTP/FTP. Supporte la reprise avec -c et le mirror récursif.
wget https://example.com/file.zip wget -c <url> wget -r -np https://site/docs/
Se connecte à un serveur distant via Secure Shell. -L crée des tunnels pour ports locaux.
ssh user@host ssh -p 2222 -i ~/.ssh/id_ed25519 user@host ssh -L 8080:localhost:80 user@host
Copie des fichiers entre machines via SSH.
scp file.txt user@host:/tmp/ scp -r dir/ user@host:/var/www/ scp user@host:/etc/conf .
Synchronise fichiers et répertoires efficacement. -avz est la combinaison la plus utilisée.
rsync -avz src/ user@host:/dest/ rsync -av --delete --exclude='.git' a/ b/
Affiche les ports en écoute et les connexions actives. -tulpn est l'usage typique.
ss -tulpn ss -t state established
Interroge le DNS. dig est plus détaillé, nslookup plus simple, host plus concis.
dig google.com dig +short MX gmail.com nslookup example.com 8.8.8.8
Compression
Empaquette et compresse des répertoires. -czf crée avec gzip, -xzf extrait.
tar -czvf archive.tar.gz folder/ tar -xzvf archive.tar.gz tar -tf archive.tar.gz
Compression zip. unzip -l liste le contenu sans extraire.
zip -r out.zip folder/ unzip archive.zip unzip -l archive.zip
Compresse/décompresse fichiers individuels avec gzip. -k garde l'original.
gzip file.txt gzip -d file.txt.gz gzip -k file.txt
Compression bzip2, plus lente mais avec un meilleur ratio que gzip.
bzip2 file.txt bunzip2 file.txt.bz2
Compression xz, ratio encore meilleur. -T0 utilise tous les coeurs.
xz file.txt unxz file.txt.xz xz -T0 file
Format 7z, ratio de compression élevé. Supporte mot de passe et split d'archives.
7z a out.7z folder/ 7z x archive.7z 7z a -p out.7z secret.txt
Recherche
Cherche des fichiers par nom, type, taille, âge, et exécute des actions avec -exec.
find . -name "*.log" find / -type f -size +100M find . -mtime -7 find . -name "*.tmp" -delete
Cherche des motifs dans des fichiers. -r récursif, -i ignore la casse, -E active regex.
grep -rn "TODO" src/ grep -i error log grep -E "warn|error" file
Traite du texte colonne par colonne. Langage complet pour parser des fichiers structurés.
awk '{print $1}' file.txt
awk -F',' '{print $2}' csv
awk '/error/ {count++} END {print count}' logÉdite des streams de texte. -i édite le fichier sur place, surtout pour les substitutions.
sed 's/old/new/g' file sed -i 's/old/new/g' file sed -n '10,20p' file
Trouve binaires et fichiers: locate (cache), which (dans le PATH), whereis (binaire, source, manuel).
locate nginx.conf which python3 whereis bash
Redirection
Redirige stdout vers un fichier, en écrasant le contenu existant.
echo hello > out.txt ls -la > files.txt
Redirige stdout vers un fichier, en ajoutant au contenu existant.
echo "line" >> log.txt date >> events.log
Connecte le stdout d'une commande au stdin de la suivante, enchaînant les processus.
ls -la | grep .conf cat file | sort | uniq
Redirige stderr (fd 2). 2>&1 fusionne stderr dans stdout. &> fait les deux en bash.
cmd 2> errors.log cmd > out.log 2>&1 cmd &> all.log
Lit depuis stdin et écrit vers fichier ET vers stdout. -a ajoute au lieu d'écraser.
ls | tee files.txt echo 'data' | sudo tee /etc/conf make | tee -a build.log
Construit des commandes à partir du stdin. Indispensable pour combiner find ou grep avec d'autres commandes.
find . -name "*.log" | xargs rm
echo "a b c" | xargs -n 1
ls *.txt | xargs -I {} cp {} backup/Environnement
Définit des variables d'environnement héritées par les processus enfants.
export PATH="$PATH:/opt/bin" export API_KEY="abc123" export -p
Liste toutes les variables d'environnement actives. printenv peut afficher une spécifique.
env printenv PATH env VAR=value command
Crée des raccourcis pour commandes. À définir dans ~/.bashrc ou ~/.zshrc pour être permanent.
alias ll='ls -la' alias gs='git status' unalias ll
Imprime du texte ou des variables vers stdout. -e active les escapes comme \n et \t.
echo "Hello $USER" echo -e "line1\nline2" echo $PATH
Charge un script dans le shell courant (pas un sous-shell). Utile pour .bashrc et venv.
source ~/.bashrc . ~/.zshrc source venv/bin/activate
Affiche l'historique des commandes. !! répète la dernière, !N exécute la commande N.
history history | grep ssh !! !42
Paquets
Gestionnaire de paquets Debian/Ubuntu. apt est plus moderne et convivial qu'apt-get.
sudo apt update && sudo apt upgrade sudo apt install nginx sudo apt remove --purge package apt search keyword
Gestionnaire de paquets Red Hat/Fedora/CentOS. dnf est le successeur moderne de yum.
sudo dnf install nginx sudo yum update dnf search keyword
Gestionnaire de paquets pour macOS et Linux avec des formules maintenues par la communauté.
brew install wget brew update && brew upgrade brew list brew search node
Gestionnaire de paquets Arch Linux. -Syu met tout à jour, -S installe, -R supprime.
sudo pacman -S nginx sudo pacman -Syu pacman -Ss keyword
Paquets universels avec sandboxing. S'installent sur n'importe quelle distribution moderne.
sudo snap install code flatpak install flathub org.gimp.GIMP snap list
SSH
Génère des paires de clés SSH. ed25519 est la recommandation actuelle (plus rapide et sûr que RSA).
ssh-keygen -t ed25519 -C "john.doe@example.com" ssh-keygen -t rsa -b 4096
Copie la clé publique vers ~/.ssh/authorized_keys du serveur distant.
ssh-copy-id user@host ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 user@host
L'agent SSH garde les clés déchiffrées en mémoire pour ne pas redemander la passphrase à chaque connexion.
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519 ssh-add -l
Client SFTP interactif pour transférer des fichiers via SSH.
sftp user@host put file.txt get remote.zip ls bye
Fichier de configuration SSH par hôte. Permet alias, identité, port, jump host.
Host myserver HostName 1.2.3.4 User john Port 2222 IdentityFile ~/.ssh/id_ed25519
Disque
Affiche l'espace utilisé et disponible par système de fichiers. -h en format lisible.
df -h df -h / df -i
Affiche l'espace occupé par fichiers et répertoires. -sh résumé en format lisible.
du -sh * du -h --max-depth=1 du -ah . | sort -rh | head -20
Monte un système de fichiers à un point de montage. umount démonte.
mount sudo mount /dev/sdb1 /mnt/data sudo umount /mnt/data
Liste disques et partitions en format arbre (lsblk) ou tableau (fdisk).
lsblk lsblk -f sudo fdisk -l
Affiche la mémoire RAM totale, utilisée, libre et cache. -h en format lisible.
free -h free -m free -h -s 2
Monitoring
Version améliorée de top avec couleurs, scroll et tue les processus avec F9.
htop htop -u www-data htop -p 1234,5678
Statistiques de mémoire virtuelle, CPU, IO. Utile pour diagnostiquer les goulots.
vmstat vmstat 2 5
Statistiques d'IO disque. Identifie les disques saturés.
iostat iostat -xz 2
Affiche les messages du noyau. Utile pour diagnostiquer matériel ou drivers.
sudo dmesg | tail sudo dmesg -T sudo dmesg -w
Contrôle les services systemd: démarrer, arrêter, voir l'état, activer au boot.
sudo systemctl start nginx sudo systemctl status sshd sudo systemctl enable docker
Logs systemd. -f suit en direct, -u filtre par service, --since par temps.
journalctl -u nginx journalctl -f journalctl --since "1 hour ago" journalctl -p err
uptime affiche depuis quand le système tourne et la load average. w liste les utilisateurs et leurs activités.
uptime w
Avancé
Répète une commande périodiquement. -d met en évidence les changements entre exécutions.
watch -n 2 "df -h" watch -d "ls -l" watch "ps aux | grep node"
Crée des sessions de terminal persistantes qui survivent aux logouts. Version classique.
screen -S work screen -r work screen -ls # Ctrl+A D to detach
Multiplexeur de terminal moderne: plusieurs fenêtres, panneaux et sessions persistantes.
tmux new -s work tmux attach -t work tmux ls # Ctrl+B D to detach
Planificateur de tâches périodiques. crontab -e édite les jobs de l'utilisateur courant.
crontab -e crontab -l 0 3 * * * /script.sh # daily at 3am */15 * * * * /poll.sh # every 15 minutes
Programme une commande pour s'exécuter une seule fois dans le futur.
echo "/script.sh" | at now + 1 hour at 14:30 tomorrow atq at -r 5
Référence
Chaque processus a trois streams par défaut identifiées par des file descriptors. Comprendre ces streams est la clé pour combiner des commandes avec pipes et redirections.
stdinfd 0Entrée standard. Par défaut vient du clavier, mais peut être remplacée par un fichier avec < ou par le stdout d'une autre commande via pipe.
stdoutfd 1Sortie standard. Par défaut va au terminal. Se redirige avec > (écraser) ou >> (ajouter).
stderrfd 2Erreurs et avertissements. Stream séparée pour que les erreurs ne se mélangent pas avec la sortie normale. Se redirige avec 2>.
cmd > out.txt # stdout → file cmd 2> err.txt # stderr → file cmd > out 2>&1 # stdout + stderr → file cmd &> all.txt # bash shorthand cmd < input.txt # stdin ← file cmd1 | cmd2 # stdout cmd1 → stdin cmd2
Chaque fichier a trois groupes de permissions (utilisateur, groupe, autres) avec trois bits chacun (read, write, execute). En format numérique chaque groupe est la somme de ses bits.
u— propriétaire du fichierg— groupe du fichiero— tous les autresa— tous (u+g+o)
r= 4 — lirew= 2 — écrirex= 1 — exécuter (ou entrer dans un répertoire)
chmod 755 file # rwx r-x r-x (typical script) chmod 644 file # rw- r-- r-- (regular file) chmod 600 file # rw- --- --- (private, e.g. SSH key) chmod 700 dir # rwx --- --- (private dir) chmod +x script.sh # add execute for everyone chmod u+w,g-w file # add write to owner, remove from group chmod -R 755 dir/ # recursive
Le shell peut avoir plusieurs jobs en même temps. Seul le job en foreground occupe le terminal; les jobs en background continuent de tourner pendant que tu tapes d'autres commandes.
Job utilisant le terminal. Reçoit les entrées du clavier et affiche la sortie. Bloque le prompt jusqu'à la fin.
Job tournant en parallèle, sans occuper le terminal. Libère le prompt pour d'autres commandes. À terminer avec kill ou en le ramenant en fg.
./long-task.sh & # start in background Ctrl+Z # suspend the foreground job jobs # list jobs of the current shell fg %1 # bring job 1 to foreground bg %1 # resume job 1 in background disown %1 # detach from shell (survives logout) nohup ./task.sh & # ignore HUP, redirect to nohup.out ps -ef # list all system processes
Combinaisons de commandes fréquentes au quotidien. Chacune résout une tâche spécifique en un seul pipeline.
- 01.Trouve les fichiers de plus de 100MB sur tout le système.
find / -type f -size +100M 2>/dev/null - 02.Liste les 10 plus gros fichiers du répertoire courant.
du -ah . | sort -rh | head -10 - 03.Cherche et remplace du texte dans tous les fichiers qui le contiennent.
grep -rl 'old' . | xargs sed -i 's/old/new/g' - 04.Compte le nombre total de fichiers récursivement.
find . -type f | wc -l - 05.Affiche tous les utilisateurs actuellement connectés au système.
who - 06.Rend tous les scripts .sh exécutables récursivement.
find . -name '*.sh' -exec chmod +x {} + - 07.Répète une commande toutes les 2 secondes pour voir les changements en direct.
watch -n 2 "df -h" - 08.Obtient l'IP publique externe de la machine actuelle.
curl -s ifconfig.me - 09.Liste tous les ports ouverts et les processus qui les utilisent.
ss -tulpn - 10.Affiche les 10 processus consommant le plus de mémoire.
ps aux --sort=-%mem | head -10 - 11.Affiche les 10 processus consommant le plus de CPU.
ps aux --sort=-%cpu | head -10 - 12.Trouve les symlinks cassés (pointant vers des fichiers inexistants).
find . -xtype l - 13.Supprime tous les fichiers .DS_Store générés par macOS.
find . -name '.DS_Store' -delete - 14.Crée un backup tar.gz avec la date dans le nom du fichier.
tar czf backup-$(date +%F).tar.gz folder/ - 15.Démarre un serveur HTTP simple sur le port 8000 pour partager des fichiers.
python3 -m http.server 8000 - 16.Formate et imprime du JSON de manière lisible.
cat data.json | python3 -m json.tool - 17.Suit un log en temps réel en commençant par les 100 dernières lignes.
tail -f -n 100 logfile - 18.Trouve tous les fichiers et répertoires vides.
find . -empty - 19.Compte les lignes de code en additionnant tous les fichiers .py du projet.
find . -name '*.py' | xargs wc -l - 20.Affiche la taille de chaque sous-répertoire trié du plus petit au plus grand.
du -h --max-depth=1 | sort -h