RousselTMLEARNING

Artículo · Administración Linux: del descubrimiento a la maestría

El shell Bash y los archivos

Este artículo está disponible en francés.

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 →

Mi seguimiento

  • ⏱ Duración estimada : ≈ 11 min

Inicia sesión para seguir tu progreso y tomar notas. Iniciar sesión

✉️ Hacer una pregunta

Artículos recomendados

Buenas Prácticas de Kubernetes

Mejores prácticas para asegurar y optimizar los despliegues de Kubernetes.