Linux sans magie #4 — Lire et modifier des fichiers texte sans quitter le terminal

Apprendre à lire, parcourir, suivre et modifier des fichiers texte sous Linux avec cat, less, head, tail et nano.

Dans les articles précédents, nous avons appris à nous repérer dans Linux, puis à créer, copier, déplacer et supprimer des fichiers.

Mais un fichier n’est vraiment utile que lorsqu’on commence à regarder ce qu’il contient.

Sous Linux, une grande partie de l’administration passe par des fichiers texte : configuration, logs, scripts, listes, notes, paramètres d’applications.

Bonne nouvelle : pas besoin d’un outil compliqué pour commencer.

Dans cet article, nous allons apprendre à afficher rapidement le contenu d’un fichier, lire confortablement un fichier plus long, n’afficher que son début ou sa fin, suivre un fichier qui évolue et modifier un fichier directement dans le terminal.

Et comme toujours dans Linux sans magie, nous allons travailler dans un petit lab isolé.

Objectif

À la fin de cet article, vous saurez utiliser :

cat
less
head
tail
nano

Vous saurez aussi choisir le bon outil selon la situation.

L’objectif n’est pas de collectionner des commandes. L’objectif est de répondre à des questions simples : que contient ce fichier ? Comment le lire sans tout afficher d’un coup ? Comment voir seulement les premières lignes ? Comment voir les dernières lignes ? Comment modifier ce fichier ?

Lab — Préparer notre espace de travail

Revenez dans votre répertoire personnel :

cd

Vérifiez :

pwd

Créez maintenant un nouveau lab :

mkdir linux-sans-magie-lab
cd linux-sans-magie-lab
pwd

Vous devriez obtenir quelque chose ressemblant à :

/home/alex/linux-sans-magie-lab

Nous allons maintenant créer un fichier avec plusieurs lignes.

Tapez :

nano journal.txt

Une interface texte s’ouvre. Saisissez simplement :

Jour 1 : découverte du terminal
Jour 2 : navigation dans les répertoires
Jour 3 : manipulation des fichiers
Jour 4 : lecture des fichiers texte
Jour 5 : permissions Linux
Jour 6 : utilisateurs et groupes
Jour 7 : processus et services

Enregistrez avec Ctrl+O, validez le nom du fichier avec Entrée, puis quittez avec Ctrl+X.

Vérifiez que le fichier existe :

ls

Vous devriez voir :

journal.txt

Notre terrain de jeu est prêt.

Lire tout le fichier avec cat

Commençons par la méthode la plus directe :

cat journal.txt

Vous devriez obtenir le contenu complet du fichier dans le terminal.

cat est très pratique pour les fichiers courts. Si le fichier contient plusieurs milliers de lignes, tout afficher d’un coup devient beaucoup moins confortable.

C’est là qu’un autre outil devient intéressant.

Lire confortablement avec less

Tapez :

less journal.txt

Cette fois, le fichier s’ouvre dans un lecteur interactif.

Vous pouvez vous déplacer avec les flèches, avancer d’une page avec Espace et quitter avec :

q

Pour un petit fichier, cat est souvent suffisant. Pour un fichier long, less est généralement plus confortable.

On peut retenir :

cat  → affiche directement
less → permet de parcourir

Chercher dans less

Ouvrez à nouveau :

less journal.txt

Puis tapez :

/permissions

et validez avec Entrée.

less recherche alors le mot permissions dans le fichier. Pour chercher l’occurrence suivante, utilisez n, puis quittez avec q.

Cette fonction devient très utile lorsque vous analysez un gros fichier de configuration ou un log.

Voir seulement le début avec head

Parfois, nous ne voulons pas lire tout un fichier. Nous voulons seulement connaître ses premières lignes.

Essayez :

head journal.txt

Nous pouvons préciser combien de lignes nous voulons :

head -n 3 journal.txt

Résultat :

Jour 1 : découverte du terminal
Jour 2 : navigation dans les répertoires
Jour 3 : manipulation des fichiers

La logique est simple :

head = début

Voir seulement la fin avec tail

Faisons maintenant l’inverse :

tail journal.txt

Pour n’afficher que les trois dernières lignes :

tail -n 3 journal.txt

Résultat attendu :

Jour 5 : permissions Linux
Jour 6 : utilisateurs et groupes
Jour 7 : processus et services

Nous avons donc deux commandes complémentaires :

head → début
tail → fin

Pourquoi tail est très utilisé en administration

Les fichiers de logs grandissent souvent avec le temps. Les nouvelles lignes sont généralement ajoutées à la fin.

Si un service vient de rencontrer une erreur, les informations intéressantes sont donc souvent dans les dernières lignes.

C’est pourquoi on rencontre souvent :

tail fichier.log

ou :

tail -n 50 fichier.log

La documentation GNU Coreutils précise que tail affiche par défaut les dix dernières lignes lorsqu’aucune autre quantité n’est indiquée.

Suivre un fichier qui évolue avec tail -f

Nous allons simuler un fichier de log.

Créez-le :

touch application.log

Ouvrez maintenant un deuxième terminal.

Dans le premier terminal, lancez :

tail -f application.log

Le terminal semble attendre. C’est normal.

Dans le deuxième terminal, placez-vous dans le même lab :

cd ~/linux-sans-magie-lab

Puis ajoutez une ligne :

echo "Application démarrée" >> application.log

Regardez le premier terminal. La ligne apparaît immédiatement.

Ajoutez-en une autre :

echo "Connexion reçue" >> application.log

Elle apparaît également.

Vous êtes en train de suivre le fichier en direct.

Pour arrêter :

Ctrl+C

Comprendre >>

Vous venez d’utiliser quelque chose de nouveau :

>>

Dans :

echo "Connexion reçue" >> application.log

cela signifie en pratique : ajoute cette sortie à la fin du fichier.

Nous étudierons les redirections plus en détail plus tard. Pour aujourd’hui, retenez simplement que cette commande nous permet de simuler un fichier de log qui reçoit de nouvelles lignes.

Provoquer une erreur contrôlée

Essayez maintenant :

cat fichier-inexistant.txt

Vous devriez obtenir quelque chose comme :

cat: fichier-inexistant.txt: No such file or directory

Avant de modifier la commande au hasard :

pwd
ls

Vérifiez : suis-je dans le bon répertoire ? Le fichier existe-t-il ? Ai-je correctement écrit son nom ?

Les mêmes réflexes reviennent constamment sous Linux.

Modifier un fichier avec nano

Ouvrez :

nano journal.txt

Déplacez-vous avec les flèches du clavier et ajoutez à la fin :

Jour 8 : modification des fichiers texte

En bas de l’écran, Nano affiche plusieurs raccourcis. Le symbole ^ représente généralement la touche Ctrl.

Ainsi :

^O = Ctrl+O
^X = Ctrl+X

Pour sauvegarder, utilisez Ctrl+O, confirmez le nom du fichier avec Entrée, puis quittez avec Ctrl+X.

Vérifiez immédiatement :

tail -n 3 journal.txt

Vous devriez voir la nouvelle ligne.

Une règle importante : modifier puis vérifier

Une habitude utile consiste à ne pas considérer une modification comme terminée simplement parce que l’éditeur s’est fermé.

Vérifiez le résultat :

cat journal.txt

ou :

tail journal.txt

selon ce que vous avez modifié.

La boucle reste la même :

observer
agir
vérifier

Que faire si Nano n’est pas installé ?

Selon la distribution ou l’installation Linux utilisée, Nano peut ne pas être présent.

Vous pourriez alors obtenir :

nano: command not found

Ce n’est pas une panne du système. Cela signifie simplement que cette commande n’est pas disponible dans votre environnement.

GNU Nano est un éditeur distinct, avec sa propre documentation et ses raccourcis.

Pour ce lab, utilisez Nano s’il est déjà disponible. Nous n’allons pas introduire ici les gestionnaires de paquets uniquement pour installer un éditeur : ils auront leur propre place dans la série.

Petit lab — Un faux fichier de configuration

Créez maintenant :

nano serveur.conf

Ajoutez :

server_name=lab
port=8080
log_level=info
enabled=yes

Enregistrez et quittez.

Vérifiez :

cat serveur.conf

Rouvrez ensuite :

nano serveur.conf

Remplacez :

log_level=info

par :

log_level=debug

Enregistrez et quittez, puis vérifiez :

cat serveur.conf

Vous venez de réaliser une opération très proche de ce que fait régulièrement un administrateur Linux : ouvrir un fichier de configuration, modifier une valeur, sauvegarder, vérifier.

Comparer les outils

Nous avons maintenant plusieurs façons de regarder un fichier :

cat   → afficher tout le fichier
less  → parcourir confortablement
head  → afficher le début
tail  → afficher la fin
nano  → modifier le fichier

Il n’y a pas une seule bonne commande. Tout dépend de la question.

Vous voulez voir un petit fichier ?

cat serveur.conf

Vous voulez parcourir un gros fichier ?

less fichier.log

Vous cherchez seulement les premières lignes ?

head fichier.txt

Vous cherchez les dernières ?

tail fichier.txt

Vous voulez le modifier ?

nano fichier.txt

Petit défi

Sans regarder immédiatement la solution, essayez de réaliser ceci :

  1. créez un fichier machine.txt ;
  2. ajoutez au moins six lignes avec Nano ;
  3. affichez tout le fichier ;
  4. affichez seulement ses trois premières lignes ;
  5. affichez seulement ses deux dernières lignes ;
  6. ouvrez-le avec less ;
  7. modifiez une ligne avec Nano ;
  8. vérifiez la modification sans rouvrir Nano.

Une solution possible consiste à créer :

hostname=lab01
os=linux
role=web
environment=test
monitoring=yes
backup=yes

puis à utiliser successivement :

cat machine.txt
head -n 3 machine.txt
tail -n 2 machine.txt
less machine.txt
nano machine.txt
cat machine.txt

Nettoyage du lab

Revenez dans votre répertoire personnel :

cd
pwd

Assurez-vous que le lab existe :

ls

Puis supprimez uniquement le répertoire que nous avons créé :

rm -r linux-sans-magie-lab

Vérifiez :

ls

Le répertoire doit avoir disparu.

Ce qu’il faut vraiment retenir

Vous venez de franchir une étape importante.

Jusqu’ici, les fichiers étaient surtout des objets que nous déplacions. Maintenant, ils commencent à devenir des sources d’information.

Vous savez répondre à plusieurs questions très courantes :

Que contient ce fichier ?
→ cat

Comment le parcourir ?
→ less

Comment voir son début ?
→ head

Comment voir sa fin ?
→ tail

Comment voir les nouvelles lignes apparaître ?
→ tail -f

Comment le modifier ?
→ nano

Références officielles

Conclusion

Vous savez maintenant créer un fichier, le lire, en inspecter seulement une partie, le suivre lorsqu’il évolue et le modifier.

Ce sont des compétences extrêmement courantes sous Linux.

Mais nous n’avons encore répondu qu’à une question : qu’y a-t-il dans le fichier ?

Une autre question arrive très vite : qui a le droit de le lire, de le modifier ou de l’exécuter ?

Dans le prochain article de Linux sans magie, nous allons donc attaquer un sujet incontournable : les permissions Linux, sans transformer rwxr-xr-x en hiéroglyphes.