1. Se déplacer #
Chemins et navigation.
Chemins absolus et relatifs #
Un chemin absolu part de la racine (/etc/nginx/nginx.conf), un chemin relatif part du répertoire courant (../logs). ~ désigne le répertoire personnel, . le répertoire courant, .. le parent.
pwd # où suis-je ?
cd /var/log ; cd - # aller puis revenir au répertoire précédent
ls -lah # liste détaillée, fichiers cachés, tailles lisibles
ls -lt | head # fichiers les plus récents
tree -L 2 /etc/nginx # arborescence sur 2 niveauxLe prompt et l'historique #
history | grep systemctl # retrouver une commande
!! # relancer la dernière commande (sudo !! si oubli de sudo)
Ctrl+R # recherche incrémentale dans l'historique
Ctrl+A / Ctrl+E # début / fin de ligne
Tab # complétion des commandes et chemins2. Manipuler les fichiers #
Créer, copier, déplacer, supprimer.
Commandes de base #
mkdir -p projet/{src,docs,tests} # créer une arborescence
touch notes.txt # créer un fichier vide
cp -a /etc/nginx /etc/nginx.bak # copier en préservant droits et dates
mv rapport.txt archives/ # déplacer ou renommer
rm -i fichier ; rm -r dossier # supprimer (sans corbeille !)
ln -s /srv/app/current app # lien symbolique
stat fichier ; file fichier # métadonnées, type réelErreur Courante :rm -rfne demande aucune confirmation et il n'y a pas de corbeille. Vérifiez la variable avantrm -rf "$DIR"/*: si elle est vide, la commande vise la racine.
Jokers (globbing) #
| Motif | Correspond à |
|---|---|
*.log | tous les fichiers finissant par .log |
app?.conf | app1.conf, appA.conf |
[0-9]* | commence par un chiffre |
{a,b}.txt | a.txt et b.txt (expansion, même s'ils n'existent pas) |
C'est le shell qui développe les jokers avant d'exécuter la commande : echo *.log montre ce que la commande recevra.
Lire un fichier #
cat fichier # tout afficher
less /var/log/syslog # paginer (/ pour chercher, q pour quitter)
head -n 20 ; tail -n 50
tail -f /var/log/nginx/error.log # suivre en temps réel
wc -l fichier # nombre de lignes3. Redirections et pipes #
Assembler de petites commandes.
Flux standard #
| Flux | Numéro | Redirection |
|---|---|---|
| Entrée standard (stdin) | 0 | < fichier |
| Sortie standard (stdout) | 1 | > fichier (écrase), >> fichier (ajoute) |
| Erreur standard (stderr) | 2 | 2> erreurs.log, 2>&1 (vers stdout) |
find / -name '*.conf' 2>/dev/null # masquer les erreurs de permission
./backup.sh > backup.log 2>&1 # tout dans un fichier
./backup.sh 2>&1 | tee backup.log # afficher et enregistrer
sudo tee /etc/motd <<'EOF' # écrire un fichier root (heredoc)
Serveur de production : soyez prudent.
EOFLe pipe #
À savoir :sudo echo x > /etc/fichieréchoue : la redirection est faite par votre shell, sans les droits root. Utilisezecho x | sudo tee /etc/fichier.
4. Chercher et transformer du texte #
find, grep, sed, awk et compagnie.
Trouver des fichiers #
find /var/log -name '*.log' -mtime -1 # modifiés depuis 24 h
find / -xdev -type f -size +500M 2>/dev/null # gros fichiers sur la partition racine
find /srv -user www-data -perm -o+w # fichiers modifiables par tous
find /tmp -type f -mtime +7 -delete # nettoyer
locate nginx.conf # recherche rapide par index (updatedb)Chercher dans les fichiers #
grep -i error /var/log/syslog
grep -rn 'listen' /etc/nginx/ # récursif avec numéros de ligne
grep -v '^#' sshd_config | grep -v '^$' # configuration sans commentaires ni lignes vides
grep -E 'error|fail' -c app.log # expression étendue, compter
zgrep 'Out of memory' /var/log/syslog*.gzTransformer #
cut -d: -f1,7 /etc/passwd # colonnes 1 et 7, séparateur :
sort -t: -k3 -n /etc/passwd # trier numériquement sur la 3e colonne
sort | uniq -c | sort -rn # compter les occurrences
tr 'a-z' 'A-Z' < fichier # remplacer des caractères
sed -i.bak 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config # remplacer en place, avec sauvegarde
sed -n '10,20p' fichier # afficher les lignes 10 à 20
awk -F: '$3 >= 1000 {print $1}' /etc/passwd # utilisateurs « humains »
awk '{s += $10} END {print s/1024/1024 " Mo"}' access.log # somme d'une colonne
diff -u ancien.conf nouveau.conf # comparer deux fichiersBonne Pratique : Avant unsed -isur un fichier de configuration, testez sans-ipour voir le résultat, et gardez une copie (-i.bak).
5. Archives et édition #
tar, compression et vim.
Archiver et compresser #
tar -czf etc-$(date +%F).tar.gz /etc # créer une archive gzip
tar -tzf etc-2026-10-26.tar.gz | head # lister le contenu
tar -xzf archive.tar.gz -C /tmp/restore # extraire ailleurs
tar -cJf logs.tar.xz /var/log/app # compression xz (plus forte)
zip -r site.zip /srv/www ; unzip site.zip
gzip -9 gros.log ; zcat gros.log.gz | lessSurvivre dans vim #
| Touche | Action |
|---|---|
i | passer en mode insertion |
Échap | revenir en mode normal |
:w / :q / :wq / :q! | enregistrer / quitter / les deux / quitter sans enregistrer |
/motif, n | chercher, occurrence suivante |
dd, yy, p | couper, copier, coller une ligne |
u | annuler |
:%s/ancien/nouveau/g | remplacer partout |
nano est plus simple pour débuter (raccourcis affichés en bas). Choisissez votre éditeur par défaut avec sudo update-alternatives --config editor ou la variable EDITOR.
