man linux_base
Linux — Cheat Sheet : Commandes de base
Référence rapide des commandes shell essentielles — navigation, utilisateurs, réseau, processus, archives.
Référence rapide des commandes shell essentielles — navigation, utilisateurs, réseau, processus, archives.
Navigation et environnement
pwd # répertoire courantcd /chemin/absolu # aller à un chemin absolucd .. # remonter d'un niveaucd ~ # aller dans le homecd - # revenir au répertoire précédent
echo $HOME # afficher une variable d'environnementecho $PATHexport MA_VAR="valeur" # définir une variable (session courante)env # lister toutes les variables d'environnementprintenv PATH # afficher une variable spécifique
which python3 # localiser un exécutabletype ls # type de commande (builtin, alias, binaire)alias ll='ls -lah' # créer un aliasunalias ll # supprimer un aliasGestion des utilisateurs et groupes
Utilisateurs
whoami # utilisateur courantid # uid, gid, groupeswho # utilisateurs connectésw # utilisateurs connectés + activité
useradd -m -s /bin/bash alice # créer un utilisateuruseradd -m -G sudo,docker alice # avec groupes supplémentairesusermod -aG docker alice # ajouter alice au groupe dockerusermod -s /bin/zsh alice # changer le shelluserdel -r alice # supprimer l'utilisateur et son home
passwd alice # changer le mot de passepasswd -l alice # verrouiller le comptepasswd -u alice # déverrouiller le compte
su - alice # basculer vers alice (shell de login)sudo commande # exécuter en tant que rootsudo -u alice commande # exécuter en tant qu'alicesudo -i # shell root interactifGroupes
groupadd devs # créer un groupegroupdel devs # supprimer un groupegroups alice # groupes d'alicecat /etc/group # liste de tous les groupesPermissions
chmod 755 fichier # rwxr-xr-x (owner/group/other)chmod u+x script.sh # ajouter l'exécution pour le ownerchmod go-w fichier # retirer l'écriture pour group et otherchmod -R 644 dossier/ # récursif
chown alice fichier # changer le propriétairechown alice:devs fichier # changer propriétaire et groupechown -R alice:alice dir/ # récursif
# Notation octale# 4 = read, 2 = write, 1 = execute# 7 = rwx, 6 = rw-, 5 = r-x, 4 = r--
umask 022 # masque de création (résultat : 644/755)| Octal | Symbolique | Signification |
|---|---|---|
7 |
rwx |
Lecture + écriture + exécution |
6 |
rw- |
Lecture + écriture |
5 |
r-x |
Lecture + exécution |
4 |
r-- |
Lecture seule |
0 |
--- |
Aucun droit |
Gestion des processus
ps aux # tous les processus (BSD style)ps -ef # tous les processus (POSIX style)ps -u alice # processus d'alicepgrep nginx # PID par nompgrep -u alice # PIDs d'alice
top # moniteur en temps réelhtop # moniteur amélioré (si installé)
kill 1234 # SIGTERM (arrêt propre)kill -9 1234 # SIGKILL (arrêt forcé)killall nginx # tuer par nompkill -u alice # tuer tous les processus d'alice
nice -n 10 commande # lancer avec priorité basse (nice 10)renice -n 5 -p 1234 # changer la priorité d'un processus existant
# Contrôle de jobscommande & # lancer en arrière-planjobs # lister les jobs en coursfg %1 # ramener le job 1 au premier planbg %1 # envoyer en arrière-planCtrl+Z # suspendre le job courantnohup commande & # résiste à la déconnexionRéseau
Connectivité et diagnostic
ping -c 4 8.8.8.8 # test de connectivité (4 pings)traceroute 8.8.8.8 # chemin réseautracepath 8.8.8.8 # idem, sans rootmtr 8.8.8.8 # ping + traceroute en temps réel
ip addr show # interfaces et adresses IPip addr show eth0 # interface spécifiqueip link show # état des interfacesip route show # table de routageip route add 10.0.0.0/24 via 192.168.1.1 # ajouter une routeip route del 10.0.0.0/24 # supprimer une route
ss -tuln # ports ouverts (TCP/UDP)ss -tlnp # avec noms de processusnetstat -tuln # équivalent (plus ancien)DNS
dig example.com # requête DNSdig example.com A # enregistrement A uniquementdig example.com MX # enregistrements MXdig @8.8.8.8 example.com # requête vers un serveur DNS spécifiquenslookup example.com # résolution DNS (interactif)host example.com # résolution rapideTransfert de fichiers
curl -O https://example.com/fichier.zip # télécharger un fichiercurl -L -o sortie.html https://example.com # suivre les redirectionscurl -I https://example.com # headers HTTP seulementcurl -X POST -d '{"k":"v"}' -H 'Content-Type: application/json' URL
wget https://example.com/fichier.zip # téléchargerwget -r -np https://example.com/ # téléchargement récursif
scp fichier.txt alice@serveur:/home/alice/ # copie SSHscp -r dossier/ alice@serveur:/tmp/ # récursifrsync -avz src/ alice@serveur:/dest/ # synchronisation SSHrsync -avz --delete src/ dest/ # avec suppression des absentsSSH
ssh alice@192.168.1.10 # connexion SSHssh -p 2222 alice@serveur # port non standardssh -i ~/.ssh/ma_cle alice@serveur # clé privée spécifiquessh -L 8080:localhost:80 serveur # tunnel localssh -R 9090:localhost:3000 serveur # tunnel distantssh -D 1080 serveur # proxy SOCKS
ssh-keygen -t ed25519 -C "alice@example.com" # générer une paire de clésssh-copy-id alice@serveur # copier la clé publiquessh-add ~/.ssh/ma_cle # ajouter au ssh-agentRecherche et filtrage
grep "motif" fichier # chercher dans un fichiergrep -r "motif" dossier/ # récursifgrep -i "motif" fichier # insensible à la cassegrep -n "motif" fichier # avec numéros de lignegrep -v "motif" fichier # lignes NE contenant PAS le motifgrep -l "motif" *.log # fichiers contenant le motifgrep -E "regex+" fichier # regex étenduegrep -c "motif" fichier # compter les occurrences
find /chemin -name "*.log" # chercher par nomfind /chemin -type f -name "*.sh" # fichiers uniquementfind /chemin -type d -name "config" # dossiers uniquementfind /chemin -mtime -7 # modifiés dans les 7 derniers joursfind /chemin -size +100M # fichiers > 100 Mofind /chemin -user alice # appartenant à alicefind /chemin -perm 644 # avec permissions exactesfind /chemin -name "*.tmp" -delete # supprimer les trouvés
locate fichier.conf # recherche dans la base de données (rapide)updatedb # mettre à jour la base de locateTraitement de texte
cat fichier.txt # afficher un fichiercat -n fichier.txt # avec numéros de lignehead -n 20 fichier.txt # 20 premières lignestail -n 20 fichier.txt # 20 dernières lignestail -f /var/log/syslog # suivre en temps réel
wc -l fichier.txt # compter les ligneswc -w fichier.txt # compter les motswc -c fichier.txt # compter les octets
sort fichier.txt # triersort -r fichier.txt # trier en sens inversesort -n fichier.txt # tri numériquesort -k2 fichier.txt # trier par colonne 2sort -u fichier.txt # trier et dédoublonner
uniq fichier.txt # supprimer les doublons consécutifsuniq -c fichier.txt # compter les occurrencesuniq -d fichier.txt # n'afficher que les doublons
cut -d':' -f1 /etc/passwd # extraire le 1er champ (délimiteur :)cut -c1-10 fichier.txt # extraire les caractères 1 à 10
tr 'a-z' 'A-Z' # remplacer des caractèrestr -d '\r' # supprimer les retours chariot Windowstr -s ' ' # compresser les espaces multiples
awk '{print $1, $3}' fichier # afficher les colonnes 1 et 3awk -F':' '{print $1}' /etc/passwd # avec délimiteurawk '$3 > 1000' fichier # filtrer par colonneawk '{sum+=$1} END {print sum}' # sommer une colonne
sed 's/ancien/nouveau/' fichier # remplacer la 1ère occurrencesed 's/ancien/nouveau/g' fichier # remplacer toutes les occurrencessed -i 's/foo/bar/g' fichier # en place (modifie le fichier)sed -n '5,10p' fichier # afficher les lignes 5 à 10sed '/motif/d' fichier # supprimer les lignes contenant le motifArchives et compression
# tartar -cvf archive.tar dossier/ # créer une archivetar -xvf archive.tar # extrairetar -xvf archive.tar -C /dest/ # extraire vers un dossiertar -tvf archive.tar # lister le contenu
# tar + compressiontar -czvf archive.tar.gz dossier/ # gziptar -xzvf archive.tar.gztar -cjvf archive.tar.bz2 dossier/ # bzip2tar -xjvf archive.tar.bz2tar -cJvf archive.tar.xz dossier/ # xztar -xJvf archive.tar.xz
# gzip / bzip2 / xzgzip fichier.txt # compresse (crée fichier.txt.gz)gunzip fichier.txt.gz # décompressegzip -k fichier.txt # compresse en gardant l'originalzcat fichier.txt.gz # lire sans décompresser
# zip / unzipzip archive.zip fichier1 fichier2zip -r archive.zip dossier/unzip archive.zipunzip archive.zip -d /dest/unzip -l archive.zip # lister le contenuInformations système
uname -a # infos noyau complèteshostname # nom de la machinehostname -I # adresses IP de la machineuptime # durée de fonctionnementdate # date et heuretimedatectl # heure, timezone, NTPtimedatectl set-timezone Europe/Brussels
df -h # espace disque (human-readable)df -hT # avec types de systèmes de fichiersdu -sh dossier/ # taille d'un dossierdu -sh * | sort -h # tailles triées
free -h # mémoire RAM et swapvmstat 1 5 # statistiques VM (5 mesures, 1s)iostat -x 1 # statistiques I/O disque
lscpu # infos CPUlsblk # périphériques blocs (disques)lsusb # périphériques USBlspci # périphériques PCIdmidecode -t memory # infos RAM (root requis)Cron et planification
crontab -e # éditer les crons de l'utilisateurcrontab -l # lister les cronscrontab -r # supprimer tous les cronscrontab -u alice -l # crons d'alice (root)
# Format : minute heure jour_mois mois jour_semaine commande# ┌─ minute (0-59)# │ ┌─ heure (0-23)# │ │ ┌─ jour du mois (1-31)# │ │ │ ┌─ mois (1-12)# │ │ │ │ ┌─ jour de la semaine (0-7, 0=7=dimanche)# │ │ │ │ │ 0 2 * * * /usr/bin/backup.sh # tous les jours à 2h00*/5 * * * * /usr/bin/check.sh # toutes les 5 minutes0 9 * * 1 /usr/bin/weekly.sh # tous les lundis à 9h000 0 1 * * /usr/bin/monthly.sh # le 1er de chaque mois à minuitTester un cron
Utiliser crontab.guru pour valider une expression cron.
Divers utiles
history # historique des commandeshistory | grep ssh # filtrer l'historique!! # répéter la dernière commande!ssh # répéter la dernière commande ssh
Ctrl+R # recherche inversée dans l'historiqueCtrl+C # interrompre la commande en coursCtrl+D # EOF / quitter le shellCtrl+L # effacer l'écran (= clear)Ctrl+A / Ctrl+E # début / fin de ligneCtrl+U # effacer jusqu'au début de ligne
xargs # passer des arguments depuis stdinecho "a b c" | xargs mkdir # créer les dossiers a, b, cfind . -name "*.tmp" | xargs rm # supprimer les .tmp trouvés
tee fichier.log # afficher ET écrire dans un fichiercommande | tee sortie.txt
screen -S ma_session # nouvelle session screenscreen -ls # lister les sessionsscreen -r ma_session # reprendre une sessiontmux new -s ma_session # nouvelle session tmuxtmux ls # lister les sessionstmux attach -t ma_session # reprendre une sessionBonnes pratiques
- Toujours vérifier une commande
rm,chmod -Rouchown -Ravant exécution. - Utiliser
sudoavec parcimonie et préférer des comptes de service dédiés. - Ne jamais exécuter des scripts téléchargés sans les avoir lus.
- Préférer
rsyncàcp -rpour les gros transferts (reprise en cas d’erreur). - Utiliser
screenoutmuxpour les sessions longues sur SSH. - Ajouter
set -euo pipefailen tête de tout script bash.
#!/usr/bin/env bashset -euo pipefail
# -e : quitter si une commande échoue# -u : erreur si variable non définie# -o pipefail : propagation des erreurs dans les pipes