<f> = un fichier · <nom> = à remplacer · [..] = optionnel · | = « ou ». Beaucoup de commandes système demandent sudo (droits admin).pwd | affiche le dossier courant (« où suis-je ? ») |
whoami | le nom de l'utilisateur courant |
id | identité complète : uid, gid, groupes |
ls | liste le contenu d'un dossier |
ls -la | liste tout, fichiers cachés + détails |
man <cmd> | le manuel d'une commande (q pour quitter) |
<cmd> --help | l'aide rapide d'une commande |
cd <dossier> | entre dans un dossier |
cd .. | remonte d'un niveau |
cd ~ | retour au dossier personnel (ou cd seul) |
cd / | va à la racine |
tree | affiche l'arborescence |
| absolu vs relatif | /home/user (partout) vs Documents (depuis ici) |
cat <f> | affiche le contenu d'un fichier |
mkdir <nom> | crée un dossier (-p crée les parents) |
touch <f> | crée un fichier vide |
cp source dest | copie un fichier |
mv anc nouv | déplace OU renomme |
rm <f> | supprime (définitif !) · rm -r pour un dossier |
jokers * ? | rm *.log agit sur plusieurs fichiers |
find <où> -name | retrouve des fichiers par nom, en profondeur |
ln -s cible lien | crée un raccourci (lien symbolique) |
mkdir -p d/{a,b,c} | plusieurs dossiers d’un coup (accolades) |
ls -l | lit les droits (ex. -rwxr-xr--) |
chmod +x <f> | rend un fichier exécutable |
chmod 755 <f> | droits en chiffres (r=4, w=2, x=1) |
chown user:grp <f> | change le propriétaire (sudo) |
sudo <cmd> | exécute en administrateur |
chgrp groupe <f> | change le groupe d’un fichier |
umask 077 | droits par défaut des nouveaux fichiers |
nano <f> | éditeur simple (Ctrl+O enregistrer, Ctrl+X quitter) |
vim <f> | éditeur à modes (i insérer, Échap, :wq enregistrer+quitter) |
echo "txt" > f | écrit dans un fichier (écrase) |
echo "txt" >> f | ajoute à la fin (sans écraser) |
cmd 2> erreurs.txt | les erreurs à part |
cmd > f 2>&1 | sortie + erreurs dans un fichier |
cmd | tee f | affiche ET enregistre |
head / tail -n <f> | le début / la fin d'un fichier |
tail -f <f> | suit un journal en direct |
grep <motif> <f> | cherche un texte (-i -n -c -v -r) |
cmd1 | cmd2 | le « pipe » : enchaîne les commandes |
wc -l | compte les lignes |
cmd > f · >> f | redirige la sortie vers un fichier |
less <f> | lit page par page (q = quitter) |
tac <f> | le fichier à l’envers |
locate <nom> | retrouve un fichier (sudo updatedb) |
sed 's/a/b/g' <f> | remplace du texte |
awk -F: '{print $1}' <f> | extrait des colonnes |
… | xargs <cmd> | passe une liste en arguments |
ps · ps aux | liste les processus |
top | activité en temps réel (q pour quitter) |
kill <PID> | arrête un processus (kill -9 force) |
cmd & · jobs | arrière-plan · liste des tâches |
fg %1 · bg %1 | au premier plan · en arrière-plan |
nohup cmd & | survit à la déconnexion |
kill -15 / -9 <PID> | poliment (TERM) / de force (KILL) |
pstree -p | l’arbre des processus |
pgrep · pkill <nom> | trouve / arrête par le nom |
cat /etc/passwd | la liste des comptes |
sudo useradd -m <nom> | crée un utilisateur |
sudo passwd <nom> | définit son mot de passe |
groups | les groupes d'un utilisateur |
sudo groupadd <nom> | crée un groupe |
sudo usermod -aG grp user | ajoute un user à un groupe |
sudo userdel -r <nom> | supprime un utilisateur |
sudo -i · sudo su - | session root (exit pour revenir) |
su - <n> | prend la session d’un autre compte |
sudo -u <n> cmd | lance une commande en tant que <n> |
sudo -l · sudo !! | tes droits sudo · refaire avec sudo |
systemctl status <svc> | l'état d'un service |
sudo systemctl start/stop | démarre / arrête un service |
sudo systemctl enable | le lance au démarrage |
fichiers .service | dans /etc/systemd/system/ (ExecStart, After) |
journalctl -u <svc> -n 20 | le journal d’un service |
systemctl status nginx | vérifie que nginx tourne |
/etc/nginx/ | la config du serveur web |
/var/www/html/ | les fichiers du site |
tail -f …/access.log | suit les visites en direct |
curl http://localhost | teste le site en ligne de commande |
ip a | adresse IP / config réseau |
ping <hôte> | teste si une machine répond |
cat /etc/resolv.conf | les serveurs DNS |
ssh-keygen | génère une clé SSH (~/.ssh/) |
ssh user@ip | connexion à une machine distante |
ssh-keygen -t ed25519 | crée ta paire de clés |
ssh-copy-id user@hôte | installe ta clé sur le serveur |
ssh user@hôte | se connecter (exit pour revenir) |
scp f user@hôte:/dossier | copie par SSH |
~/.ssh/config | surnoms de serveurs (Host …) |
sudo ufw status | l'état du pare-feu |
sudo ufw enable | active le pare-feu · ufw allow <port> |
grep Failed …/auth.log | repère les tentatives SSH ratées |
sudo fail2ban-client status sshd | fail2ban : les IP bannies de la prison SSH |
/etc/fail2ban/jail.local | tes réglages (maxretry, bantime) · jamais jail.conf |
fail2ban-client set sshd unbanip <IP> | débannit une IP bloquée par erreur |
/etc/ssh/sshd_config | durcir la connexion SSH |
sudo visudo | qui a le droit d'utiliser sudo |
df -h | l'espace disque disponible |
du -sh <dossier> | la taille d'un dossier |
lscpu | les infos du processeur |
free -h | la mémoire (regarde available) |
uname -a | la version du système |
apt search · apt show | chercher · détails d’un paquet |
sudo apt install / remove | installer / désinstaller |
dpkg -l · dpkg -L <p> | paquets installés · leurs fichiers |
snap find · snap install | les paquets snap (--classic) |
uptime | depuis quand + charge système |
w · who | qui est connecté |
last | l'historique des connexions |
htop | un top en couleur, plus lisible |
vmstat | CPU / mémoire / disque en un coup d'œil |
crontab -l | liste tes tâches planifiées |
crontab -e | édite : min h jour mois j-sem cmd |
echo '…' | crontab - | installe (⚠️ REMPLACE toute la crontab) |
crontab -l > f puis crontab f | ajouter une tâche sans rien perdre |
*/15 * * * * · 0 7 * * 1-5 | toutes les 15 min · 7 h en semaine |
systemctl list-timers | les timers systemd (le cron moderne) |
date | la date et l'heure du système |
/etc/anacrontab | rattrape les tâches manquées |
echo cmd | at now + 5 minutes | une tâche unique (atq, atrm) |
#!/bin/bash | le « shebang » : 1ʳᵉ ligne d'un script |
VAR=x · $VAR | variables (ex. echo $PATH) |
./script.sh | lance le script (après chmod +x) |
echo $? | le code de retour (0 = tout va bien) |
$(commande) | substitution : insère le résultat d'une commande |
read -p "? " var | demande une saisie |
$(( a + b )) | calcul entier |
if [ -f f ]; then …; fi | une condition |
[ $a -gt 5 ] · [ -z "$v" ] | tests : nombres / texte |
case $v in a) …;; esac | plusieurs cas |
for i in {1..5}; do …; done | une boucle |
while read l; do …; done < f | ligne par ligne |
$1 $2 · $# · "$@" | les arguments du script |
f() { …; } | une fonction |
a && b · a || b | si ça marche · sinon |
bash -x script.sh | déboguer (trace) |
git init | crée un dépôt dans le dossier |
git status | l'état des fichiers (ta boussole) |
git add <f> | ajoute à l'index (git add . = tout) |
git commit -m "msg" | enregistre un instantané |
git log | relit l'historique des commits |
egrep -c 'vmx|svm' /proc/cpuinfo | CPU compatible virtualisation ? (> 0 = oui) |
sudo apt install qemu-kvm | installe l'hyperviseur |
sudo systemctl enable --now libvirtd | démarre le démon de virtualisation |
virsh list --all | liste les machines virtuelles |
virsh start <vm> | démarre une VM |
tar czf a.tar.gz <dossier> | crée une archive compressée |
tar xzf a.tar.gz | extrait une archive |
| les lettres | c=créer, x=extraire, z=gzip, f=fichier |
gzip f · gunzip f.gz | compresser · décompresser |
zip -r a.zip d · unzip a.zip | archive .zip |
ss -tlnp | les ports en écoute et leur programme |
proxy_pass <url>; | nginx relaie vers l'app, ex. http://127.0.0.1:3000 |
ln -s <cible> <lien> | active un site dans sites-enabled/ (cible en chemin absolu !) |
sudo nginx -t | teste la config avant de la charger |
systemctl reload nginx | recharge sans couper les visiteurs (sudo) |
proxy_set_header | transmet Host, X-Real-IP, X-Forwarded-For à l'app |
upstream <nom> { } | répartit la charge entre instances (server ip:port;) |
| erreur 502 | l'app derrière ne répond pas → /var/log/nginx/error.log |
curl -x <proxy> <url> | passe par un proxy sortant (Squid, port 3128) |
export http_proxy=… | proxy pour tout le système (+ https_proxy) |
cat /etc/redhat-release | quelle distribution de la famille Red Hat |
dnf install / search / info | les paquets .rpm (équivalent d'apt) |
rpm -q <paquet> | est-il installé ? (-qa = tous) |
systemctl enable --now | démarre maintenant ET au boot (rien ne démarre seul) |
-G wheel | le groupe des admins (au lieu de sudo) |
firewall-cmd --add-service=http | ouvre le web (firewalld) |
--permanent puis --reload | sinon la règle disparaît au rechargement |
getenforce · ls -Z | mode SELinux · étiquettes des fichiers |
restorecon -Rv <chemin> | remet les bonnes étiquettes (après un mv) |
semanage fcontext -a -t | nouvelle règle d'étiquette, puis restorecon |
setsebool -P <booléen> on | active une permission SELinux prévue |
| 403 sur Red Hat | droits Unix OK ? → /var/log/audit/audit.log |
nmcli device · ip a | les cartes · les adresses actives |
nmcli con mod enp0s3 ipv4.… | enregistre (addresses avec /24, gateway, dns, method manual) |
nmcli con up enp0s3 | applique ; +ipv4.dns ajoute au lieu de remplacer |
hostnamectl set-hostname | nom d'hôte permanent (écrit /etc/hostname) |
… | sudo tee -a /etc/hosts | écrire dans un fichier système (pas sudo echo >>) |
groupadd -g · useradd -u -G | GID / UID imposés, groupe secondaire |
chage -M 90 -W 7 · -d 0 | durée du mot de passe · changer au 1er login |
useradd -r -s /sbin/nologin | compte de service, sans connexion |
chgrp + chmod 2770 | dossier partagé : le set-GID garde le groupe |
/etc/sudoers.d/ · visudo -c | une règle par fichier, en chmod 440, syntaxe vérifiée |
systemctl set-default | multi-user.target (texte) ou graphical.target |
journalctl -u sshd -p err | journaux d'un service · les erreurs |
mkdir /var/log/journal | + restart systemd-journald = journaux persistants |
tuned-adm recommend / profile | le profil de performance conseillé |
parted /dev/sdb mklabel gpt | puis mkpart, set 1 lvm on (ou fdisk + w) |
vgcreate -s 8M vg /dev/sdb1 | taille d'extent imposée ; lvcreate -l 50 = 50 extents |
lvextend -r -L 600M | agrandit le LV ET le système de fichiers, à chaud |
mkswap · swapon -a | swap permanent : ligne UUID=… none swap defaults 0 0 |
mount -a · findmnt --verify | tester fstab AVANT de redémarrer |
/etc/exports · exportfs -rv | partage NFS ; showmount -e serveur |
defaults,_netdev | montage NFS dans fstab (attend le réseau) |
/etc/auto.master.d/x.autofs | autofs ; carte joker * -rw srv:/homes/& |
rd.break → chroot /sysroot | passwd root puis touch /.autorelabel |
podman run -d -p 8080:8080 -v ~/web:…:Z | conteneur rootless, volume étiqueté SELinux |
~/.config/containers/systemd/*.container | Quadlet : le conteneur devient un service utilisateur |
loginctl enable-linger kai | ses services démarrent au boot, sans connexion |
$# · "$@" · exit 1 · $? | arguments, codes de sortie d'un script |
crontab -e · at now + 1 minute | tâche répétée · tâche unique (chemins complets !) |
cal | le calendrier du mois |
seq 1 10 | une suite de nombres |
echo "2+2" | bc | le terminal comme calculatrice |
which <cmd> | où se trouve une commande |
stat <f> | infos détaillées d’un fichier |
file <f> | le type d’un fichier |
sort · uniq | trie / dédoublonne des lignes |
cut -d: -f1 | extrait une colonne |
tr a b | remplace des caractères |
rev | inverse chaque ligne |
factor 60 | décompose en facteurs premiers |
alias | tes raccourcis (ex. ll=ls -la) |
cowsay txt | la vache qui parle 🐄 |
alias nom='cmd' | ton propre raccourci |
source ~/.bashrc | recharge ta config |
PS1='\u@\h:\w\$ ' | personnalise l’invite |
printenv · export V=x | l’environnement |