La commande Linux `fold` permet de gérer l’affichage de texte en définissant une largeur de sortie. Elle est utile pour lire de longs textes, des chaînes de caractères ininterrompues ou des flux de données non formatés. Voici comment l’utiliser.
Comprendre les lignes de texte dans le terminal Linux
Pour maîtriser `fold`, il faut comprendre ce qu’est une ligne de texte. Il s’agit d’une suite de caractères (lettres, chiffres, symboles, espaces) qui se termine par un caractère spécial indiquant un « retour à la ligne ». Sous Linux et Unix, ce caractère de nouvelle ligne (ou saut de ligne) est un octet de valeur 0x0a en hexadécimal (10 en décimal).
D’autres systèmes d’exploitation utilisent des valeurs différentes. Par exemple, Windows utilise une combinaison de deux octets : le caractère de nouvelle ligne, suivi du caractère de retour chariot (0x0d en hexadécimal, soit 13 en décimal).
Ces termes, « saut de ligne » et « retour chariot », proviennent des machines à écrire. Le papier était enroulé autour d’un cylindre, le plateau, monté sur un chariot mobile. Le chariot se déplaçait d’un caractère à gauche à chaque frappe. Pour changer de ligne, on actionnait un levier qui ramenait le chariot à sa position de départ et faisait tourner le cylindre pour avancer le papier d’une ligne. Le retour du chariot et l’avancement du papier étaient donc deux actions distinctes.
Avec l’électrification des machines à écrire, le levier a été remplacé par une touche, nommée « Retour chariot » ou simplement « Retour ». Certains ordinateurs, comme le BBC Micro, ont conservé le nom « Return » pour la touche que nous appelons aujourd’hui « Entrée ».
En général, les caractères de nouvelle ligne sont invisibles. On ne voit que leur effet : le texte passe à la ligne suivante.
Pourquoi se préoccuper des lignes longues ?
Un texte sans (ou avec peu de) sauts de ligne sera trop large pour être lu confortablement dans une fenêtre de terminal. C’est gênant, mais gérable.
Un problème plus important est celui des lignes si longues qu’elles causent des soucis au logiciel qui doit les traiter, les transmettre ou les recevoir. Cela peut être dû à des limites de mémoire tampon ou à d’autres spécificités du programme.
La solution est la commande `fold`.
Premiers pas avec `fold`
Prenons un texte avec de très longues lignes. (Il s’agit d’un extrait de Moby Dick d’Herman Melville.)
Une ligne de texte s’étend du dernier caractère de nouvelle ligne (ou du début du fichier) jusqu’au caractère de nouvelle ligne suivant. Elle peut contenir plusieurs phrases et déborder de la fenêtre du terminal. Il s’agit toujours d’une seule ligne.
Voici le texte brut :
less moby-dick.txt
Affichage du texte avec `less` :
Les lignes sont très longues et coupent les mots.
Voici une autre version du fichier, avec des lignes plus courtes :
less short-lines-moby-dick.txt
Les lignes sont beaucoup plus courtes, chacune se terminant par un caractère de nouvelle ligne.
Avec `hexdump`, on peut visualiser les octets du fichier et les caractères de nouvelle ligne. L’option `-C` formate la sortie en affichant les valeurs hexadécimales.