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 :
- créez un fichier
machine.txt; - ajoutez au moins six lignes avec Nano ;
- affichez tout le fichier ;
- affichez seulement ses trois premières lignes ;
- affichez seulement ses deux dernières lignes ;
- ouvrez-le avec
less; - modifiez une ligne avec Nano ;
- 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
- GNU Coreutils manual — documentation officielle de
cat,headettail. - GNU Nano documentation — documentation officielle de Nano.
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.
