RousselTMLEARNING

Article · Administration Linux : de la découverte à l'expertise

Le shell Bash et les fichiers

1. Se déplacer #

Chemins et navigation.

Chemins absolus et relatifs #

Chemins absolus et relatifs
Un chemin relatif dépend du répertoire courant ; un chemin absolu, jamais.

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 niveaux

Le 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 chemins

2. 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éel
Erreur Courante : rm -rf ne demande aucune confirmation et il n'y a pas de corbeille. Vérifiez la variable avant rm -rf "$DIR"/* : si elle est vide, la commande vise la racine.

Jokers (globbing) #

MotifCorrespond à
*.logtous les fichiers finissant par .log
app?.confapp1.conf, appA.conf
[0-9]*commence par un chiffre
{a,b}.txta.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 lignes

3. Redirections et pipes #

Assembler de petites commandes.

Flux standard #

Flux standard d'une commande
Séparer stdout et stderr permet de garder les résultats et de jeter ou journaliser les erreurs.
FluxNuméroRedirection
Entrée standard (stdin)0< fichier
Sortie standard (stdout)1> fichier (écrase), >> fichier (ajoute)
Erreur standard (stderr)22> 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.
EOF

Le pipe #

Pipeline de commandes
La philosophie Unix : des outils simples qui font une chose et se combinent.
Analyse d'un journal d'accès
En deux lignes, on trouve l'URL responsable des erreurs 500.
À savoir : sudo echo x > /etc/fichier échoue : la redirection est faite par votre shell, sans les droits root. Utilisez echo 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*.gz

Transformer #

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 fichiers
Bonne Pratique : Avant un sed -i sur un fichier de configuration, testez sans -i pour 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 | less

Survivre dans vim #

Modes de vim
Perdu dans vim ? Échap, puis :q! pour quitter sans enregistrer.
ToucheAction
ipasser en mode insertion
Échaprevenir en mode normal
:w / :q / :wq / :q!enregistrer / quitter / les deux / quitter sans enregistrer
/motif, nchercher, occurrence suivante
dd, yy, pcouper, copier, coller une ligne
uannuler
:%s/ancien/nouveau/gremplacer 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.

📄 Le shell Bash et les fichiers : navigation, redirections, pipes et traitement de texte →

Mon suivi

  • ⏱ Durée estimée : ≈ 11 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

✉️ Poser une question

Articles recommandés

Bonnes Pratiques Kubernetes

Meilleures pratiques pour sécuriser et optimiser les déploiements Kubernetes.

Comparaison Offres Kubernetes

Analyse complète des offres managées de Kubernetes avec points forts, fonctionnalités, tarificati...

Stratégies de placement Kubernetes

Présentation des stratégies de placement dans Kubernetes pour optimiser la gestion des charges de...

CNI Kubernetes : Flannel, Calico et Cilium comparés

Kubernetes CNI : comprendre les plugins réseau (Container Network Interface) et comparer Flannel,...

Gestionnaires de packages

Les différents gestionnaires de packages pour Kubernetes et leurs avantages.

Jobs vs Serverless

Comparaison entre les Jobs Kubernetes et le modèle Serverless pour le calcul de tâches en arrière...

PersistentVolume, PersistentVolumeClaim et StorageClass dans Kubernetes

PersistentVolume (PV), PersistentVolumeClaim (PVC) et StorageClass dans Kubernetes : différences,...

Resource Quota Kubernetes

Guide complet sur les quotas de ressources Kubernetes pour la gestion des namespaces.

ConfigMaps et Secrets

Guide complet sur les ConfigMaps et Secrets dans Kubernetes.