$ carnet-linux
PHASE 1 · MODULE 03

Lire & éditer des fichiers

Sous Linux, presque tout est du texte : configuration, journaux, scripts. Ce module te donne les outils pour lire n'importe quel fichier, le surveiller en direct, et le modifier avec nano… puis avec Vim, l'éditeur des pros.

⏱️ Lecture ~45 min 🧪 Pratique ~1 h 30 🎚️ Niveau débutant
Tux

🎯 Ce que tu sauras à la fin

👀

Lire

Choisir le bon outil : cat, less, head, tail.

📡

Surveiller

Suivre un journal en direct avec tail -f.

📝

Éditer

Modifier un fichier avec nano en toute sérénité.

🧙

Vim

Comprendre ses modes, et ne plus jamais y rester coincé.

Lire un fichier : un outil par situation

▶ Vidéo · 1 min 30Lire un fichiercat, less, head, tail et wc
Animation réalisée pour ce cours. Voix off et musique générées par IA (Google Gemini et Lyria).
BesoinCommandeExemple
Afficher un petit fichier en entiercatcat /etc/hostname
Lire un long fichier page par pagelessless /etc/services
Voir le débutheadhead -n 5 /etc/passwd
Voir la fintailtail -n 20 /var/log/syslog
Suivre les ajouts en directtail -ftail -f /var/log/syslog
Compter lignes, mots, octetswcwc -l /etc/passwd

cat : tout, tout de suite

user@ubuntu:~$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION_CODENAME=noble
...
user@ubuntu:~$ cat -n /etc/hostname     # -n numérote les lignes
     1	ubuntu

Son nom vient de concatenate : cat a.txt b.txt affiche les deux fichiers à la suite. Sa cousine tac affiche un fichier… à l'envers, de la dernière ligne à la première.

Pas de cat sur un fichier binaire

Un cat sur un programme ou une image affiche des caractères incompréhensibles et peut dérégler le terminal. Vérifie d'abord avec file nom. Si le terminal est déjà déréglé, tape reset (même à l'aveugle) et Entrée.

less : le lecteur page par page

C'est le même lecteur que man : tu connais déjà ses touches. Il ne charge pas tout le fichier en mémoire, donc il ouvre instantanément des fichiers de plusieurs gigaoctets.

ToucheAction
Espace / BPage suivante / précédente
G / Maj + GDébut / fin du fichier
/mot puis N / Maj + NRechercher, occurrence suivante / précédente
Maj + FMode « suivi » comme tail -f (Ctrl + C pour en sortir)
QQuitter

Option pratique : less -N fichier affiche les numéros de ligne.

head et tail : le début et la fin

user@ubuntu:~$ head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
user@ubuntu:~$ tail -n 2 /etc/passwd
user:x:1000:1000:user,,,:/home/user:/bin/bash
vboxadd:x:999:1::/var/run/vboxadd:/bin/false

tail -f : le direct

Avec -f (follow), tail ne s'arrête pas : chaque ligne ajoutée au fichier s'affiche immédiatement. C'est l'outil de base pour surveiller un serveur ou comprendre ce qui se passe pendant une manipulation. Essaie avec deux terminaux côte à côte :

user@ubuntu:~$ tail -f /var/log/syslog
2026-10-22T11:20:41 ubuntu systemd[1]: Started ...
2026-10-22T11:20:58 ubuntu user: Bonjour depuis le terminal 2 !   # apparaît en direct
user@ubuntu:~$ logger "Bonjour depuis le terminal 2 !"   # écrit un message dans le journal

Ctrl + C arrête le suivi. Variante robuste : tail -F continue même si le fichier est remplacé (rotation des journaux).

wc : compter

user@ubuntu:~$ wc /etc/passwd
  37   64 2072 /etc/passwd       # lignes, mots, octets
user@ubuntu:~$ wc -l /etc/passwd          # seulement les lignes
37 /etc/passwd

Éditer avec nano

nano est l'éditeur le plus simple du terminal, installé par défaut sur Ubuntu. Ses raccourcis sont affichés en bas de l'écran, avec deux notations à connaître : ^ = Ctrl et M- = Alt.

  GNU nano 7.2                         notes.txt
Ma première note sous Linux.
Elle est écrite avec nano.

^G Aide      ^O Écrire    ^W Chercher  ^K Couper    ^T Exécuter  ^C Position
^X Quitter   ^R Lire fich.^\ Remplacer ^U Coller    ^J Justifier ^/ Aller ligne
RaccourciAction
Ctrl + O puis EntréeEnregistrer (write Out)
Ctrl + XQuitter (propose d'enregistrer si besoin)
Ctrl + K / Ctrl + UCouper la ligne / coller
Ctrl + WRechercher
Ctrl + \Rechercher et remplacer
Alt + U / Alt + EAnnuler / rétablir
Ctrl + /Aller à une ligne donnée
user@ubuntu:~$ nano notes.txt                # crée le fichier s'il n'existe pas
user@ubuntu:~$ nano -l notes.txt             # avec les numéros de ligne
user@ubuntu:~$ sudo nano /etc/hosts          # un fichier système : il faut sudo
Éditer un fichier système

Avant de modifier un fichier de /etc, fais-en une copie : sudo cp /etc/hosts /etc/hosts.bak. Une faute dans certains fichiers (/etc/fstab, /etc/sudoers…) peut empêcher le système de démarrer ou te priver de sudo. Dans la VM, un instantané avant ne coûte rien.

Vim : survivre, puis briller

▶ Vidéo · 1 min 30Survivre à Vimles modes et la formule magique
Animation réalisée pour ce cours. Voix off et musique générées par IA (Google Gemini et Lyria).

Vim (Vi IMproved, 1991) descend de vi, écrit en 1976. Il est présent sur pratiquement tous les serveurs Unix et Linux du monde, ce qui en fait l'éditeur à connaître quand rien d'autre n'est disponible. Sur Ubuntu, une version minimale est installée ; la version complète s'obtient avec sudo apt install vim.

La blague la plus célèbre de l'informatique

« Comment quitter Vim ? » est l'une des questions les plus consultées de l'histoire de Stack Overflow, vue des millions de fois. La blague dit qu'on ne quitte pas Vim : on redémarre l'ordinateur. Après cette section, tu n'en auras plus besoin.

Les modes : la clé de tout

Dans la plupart des éditeurs, taper une lettre écrit cette lettre. Dans Vim, cela dépend du mode :

🎮
Mode normalau démarrage · les touches sont des commandes
⇄
✍️
Mode insertioni pour entrer · Échap pour sortir
·
⌨️
Mode commande: depuis le mode normal · :w, :q…

Le kit de survie

Je veux…Je tape
Écrire du textei, puis je tape normalement
Arrêter d'écrireÉchap (en cas de doute : Échap, toujours)
Enregistrer:w Entrée
Enregistrer et quitter:wq Entrée (ou ZZ)
Quitter sans enregistrer:q! Entrée : la formule magique

Pour aller plus vite (mode normal)

CatégorieTouches
Se déplacerh j k l (gauche, bas, haut, droite) · w / b mot suivant / précédent · 0 / $ début / fin de ligne · gg / G début / fin du fichier
Inséreri avant le curseur · a après · o nouvelle ligne en dessous · A en fin de ligne
Modifierx supprime un caractère · dd supprime (coupe) la ligne · yy copie la ligne · p colle · u annule · Ctrl + R rétablit · . répète
Chercher/mot puis n / N · :%s/ancien/nouveau/g remplace partout
CombinerUn nombre devant répète : 3dd supprime 3 lignes, 5j descend de 5 lignes
vimtutor : le meilleur cours de Vim

Tape vimtutor dans un terminal : un tutoriel interactif de 30 minutes s'ouvre, dans Vim lui-même. Il existe en français (vimtutor fr, avec le paquet vim complet). C'est la façon la plus efficace d'apprendre.

Choisir son éditeur par défaut

Certaines commandes (crontab -e, git commit, sudoedit…) ouvrent un éditeur automatiquement. Pour choisir lequel :

user@ubuntu:~$ sudo update-alternatives --config editor
  Sélection   Chemin              Priorité  État
* 0            /bin/nano            40       mode automatique
  1            /usr/bin/vim.basic   30       mode manuel
...

Encodages et fins de ligne

Un fichier texte n'est qu'une suite d'octets. Deux conventions décident de la façon de les interpréter, et sont source de bugs mystérieux :

🔤

L'encodage

Comment les caractères (é, ç, €, emoji) sont codés en octets. Linux utilise UTF-8 partout. Un vieux fichier en Latin-1 affichera des accents cassés (é au lieu de é).

↵

La fin de ligne

Linux termine les lignes par LF (\n), Windows par CRLF (\r\n). Un script écrit sous Windows peut refuser de fonctionner sous Linux.

user@ubuntu:~$ file script.sh
script.sh: Bourne-Again shell script, ASCII text executable, with CRLF line terminators
user@ubuntu:~$ ./script.sh
bash: ./script.sh: /bin/bash^M: bad interpreter: No such file or directory
user@ubuntu:~$ cat -A script.sh | head -2    # -A montre les caractères invisibles
#!/bin/bash^M$
echo "Bonjour"^M$                          # ^M = le \r de Windows, $ = fin de ligne
user@ubuntu:~$ sudo apt install dos2unix && dos2unix script.sh   # conversion

Pour l'encodage, file -i fichier indique le jeu de caractères, et iconv -f latin1 -t utf-8 ancien.txt > nouveau.txt convertit.

Glossaire du module

cat
Affiche (et concatène) des fichiers.
less
Lecteur page par page, aussi utilisé par man.
head / tail
Début / fin d'un fichier ; tail -f suit les ajouts en direct.
wc
Compte lignes, mots et octets.
Éditeur de texte
Programme pour modifier un fichier texte : nano, Vim, Emacs…
nano
Éditeur simple, raccourcis affichés à l'écran.
Vim
Éditeur modal, puissant, présent sur presque tous les serveurs.
Mode normal / insertion / commande
Les trois états de Vim : commandes, saisie de texte, commandes en :.
UTF-8
L'encodage de caractères standard sous Linux.
LF / CRLF
Fin de ligne Linux / Windows.

🧠 Quiz : as-tu tout retenu ?

1. Quel outil pour lire confortablement un fichier de 50 000 lignes ?
less affiche page par page et permet de chercher. cat ferait tout défiler.
2. Comment afficher les 20 dernières lignes d'un journal ?
tail montre la fin, head le début.
3. Que fait tail -f ?
-f = follow. On l'arrête avec Ctrl + C.
4. Dans nano, ^O signifie…
^ représente Ctrl, M- représente Alt.
5. Tu viens d'ouvrir Vim et tu tapes des lettres : rien ne s'écrit. Pourquoi ?
Au démarrage, Vim est en mode normal, où les touches sont des commandes.
6. Comment quitter Vim sans enregistrer ?
:q! force la sortie en abandonnant les modifications. :wq enregistre puis quitte.
7. Dans Vim (mode normal), que fait dd ?
dd coupe la ligne ; p la recolle ailleurs.
8. Un script venu de Windows affiche « /bin/bash^M: bad interpreter ». La cause ?
Le ^M est le \r des fins de ligne Windows. Solution : dos2unix.
Réponds aux questions pour voir ton score.

🚀 Mission pratique

À faire dans la machine virtuelle

Coche chaque étape une fois faite : sa correction s'affiche juste en dessous.

  • ✅ Correction
    $ cat /etc/os-release
    $ cat -n /etc/os-release
         1	PRETTY_NAME="Ubuntu 24.04.x LTS"
         2	NAME="Ubuntu"
    ...
  • ✅ Correction
    $ less /etc/services
    # /ssh puis Entrée : la ligne « ssh 22/tcp » est surlignée
    # n : occurrence suivante  ·  Maj+G : fin du fichier  ·  q : quitter
  • ✅ Correction
    $ head -n 3 /etc/passwd
    $ tail -n 3 /etc/passwd
    $ wc -l /etc/passwd
    37 /etc/passwd

    Le nombre de lignes dépend des paquets installés.

  • ✅ Correction
    # Terminal 1
    $ tail -f /var/log/syslog
    # Terminal 2
    $ logger "Bonjour depuis le terminal 2"
    # Terminal 1 affiche aussitôt :
    ... ubuntu user: Bonjour depuis le terminal 2

    « Permission non accordée » ? Utilise sudo tail -f /var/log/syslog. Ctrl + C pour arrêter.

  • ✅ Correction
    $ mkdir -p ~/labo
    $ nano ~/labo/notes.txt

    Écris 5 lignes. Sur une ligne : Ctrl + K (couper), déplace le curseur, Ctrl + U (coller). Enregistre avec Ctrl + O puis Entrée, quitte avec Ctrl + X. Vérifie avec cat ~/labo/notes.txt.

  • ✅ Correction
    $ vim ~/labo/notes.txt

    G (aller à la fin), o (nouvelle ligne en dessous, mode insertion), tape ta ligne, Échap, puis :wq et Entrée.

  • ✅ Correction

    Dans Vim : dd plusieurs fois, puis Échap et :q! Entrée. Vérifie avec cat ~/labo/notes.txt : le fichier est intact. (Si tu tapes seulement :q, Vim refuse avec l'erreur E37.)

  • ✅ Correction

    Dans Vim, en mode normal : :%s/note/mémo/g puis Entrée. % = tout le fichier, g = toutes les occurrences de chaque ligne. Ajoute c à la fin (/gc) pour confirmer chaque remplacement. Enregistre avec :wq.

  • ✅ Correction
    $ vimtutor
    # version française complète :
    $ sudo apt install vim
    $ vimtutor fr

    Le tutoriel travaille sur une copie : aucun risque de casser quoi que ce soit.

  • ✅ Correction
    $ sudo cp /etc/hosts /etc/hosts.bak
    $ sudo nano /etc/hosts
    # ajouter la ligne :  127.0.0.1   monsite.local
    $ ping -c 1 monsite.local
    64 octets de localhost (127.0.0.1) : icmp_seq=1 ...
    $ sudo cp /etc/hosts.bak /etc/hosts

💬 Questions fréquentes

Les questions qui reviennent le plus souvent sur ce module, avec leurs réponses.

Vim affiche « E37: No write since last change »

Tu as tapé :q alors que le fichier a été modifié : Vim refuse de perdre ton travail. Choisis : :wq pour enregistrer et quitter, ou :q! pour abandonner les modifications.

« [ Fichier « … » non accessible en écriture ] » dans nano

Le fichier appartient à root (typiquement dans /etc). Quitte sans enregistrer, puis rouvre-le avec sudo nano fichier. Dans Vim, l'astuce :w !sudo tee % permet d'enregistrer quand même, mais mieux vaut prendre l'habitude d'ouvrir le fichier avec les bons droits.

Je n'ai pas le droit de lire /var/log/syslog

Les journaux sont réservés aux administrateurs. Sur Ubuntu, le premier compte créé appartient au groupe adm, qui peut les lire ; sinon, utilise sudo tail -f /var/log/syslog. La commande journalctl (module 10) offre une autre façon de lire les journaux.