in

Comment utiliser la commande fold sous Linux

Fatmawati Achmad Zaenuri / Shutterstock

Le Linux fold commande apporte une sortie indisciplinée au talon. Lisez de larges morceaux de texte, des chaînes sans fin et des flux non formatés en contrôlant la largeur de la sortie. Apprendre.

Fonctionnement des lignes de texte dans le terminal Linux

Première règle du combat Linux: connaissez votre ennemi. Alors définissons-le. Qu’est-ce qu’une ligne de texte exactement? Il s’agit d’une séquence de caractères (lettres, chiffres, symboles et espaces) qui se termine par un octet spécial qui signifie «commencer une nouvelle ligne». Sous Linux et Unix, le caractère de nouvelle ligne, également appelé saut de ligne, est utilisé comme indicateur de fin de ligne. C’est un octet avec une valeur de 0x0a dans hexadécimal et dix en décimal.

Différents systèmes d’exploitation utilisent des valeurs d’octet différentes pour indiquer la fin d’une ligne. Windows utilise une séquence de deux octets. Dans les fichiers texte Windows, le caractère de nouvelle ligne est immédiatement suivi du caractère de retour chariot, qui est 0x0d en hexadécimal et treize en décimal.

Les termes «saut de ligne» et «retour chariot» remontent à à la machine à écrire. Le plateau, le cylindre autour duquel le papier était enroulé, était monté sur un chariot mobile. Le chariot déplaçait la largeur d’un caractère vers la gauche chaque fois que vous appuyez sur une touche. Pour commencer une nouvelle ligne, vous avez poussé un levier qui a ramené le chariot à sa position d’origine, et qui a fait tourner le rouleau et déplacé le papier vers le haut d’une hauteur d’une ligne. Cette action était connue sous le nom de retour du chariot, et la rotation du cylindre (et l’avancement du papier) était connue sous le nom de saut de ligne.

Le levier a été remplacé par une clé lorsque la machine à écrire s’est électrifiée. La clé était intitulée Retour chariot ou simplement Retour. Certains premiers ordinateurs tels que le BBC Micro toujours utilisé le nom Return sur ce que nous appelons maintenant le Enter clé.

En règle générale, vous ne pouvez pas voir les caractères de nouvelle ligne. Vous ne pouvez voir que leurs fichiers. Le caractère de nouvelle ligne force le logiciel qui affiche ou traite le texte à commencer une nouvelle ligne.

Mais quel est le problème avec les longues lignes?

Le texte ne contenant pas ou très peu de caractères de nouvelle ligne sera trop large pour être lu confortablement dans la fenêtre du terminal. C’est ennuyeux, mais c’est faisable.

Un problème plus pernicieux est de devoir traiter des lignes d’une longueur telle qu’elles posent un problème au logiciel qui doit traiter, transmettre ou recevoir le texte. Cela peut être dû à des longueurs de mémoire tampon interne ou à d’autres aspects du logiciel que vous ne pouvez pas régler.

Mais il y a une solution pour ça, appelée fold.

Premiers pas avec pli

Jetons un coup d’œil à une partie du texte qui contient de très, très longues lignes. Notez que nous ne parlons pas de phrases ici. (Bien que le texte provienne de Moby Dick de Herman Melville, nous avons donc le meilleur des deux mondes.)

Une ligne de texte est tout depuis le dernier caractère de nouvelle ligne (ou le début du fichier si c’est la première ligne du fichier) jusqu’au prochain caractère de nouvelle ligne, indépendamment de ce qui se trouve entre les deux. La ligne peut contenir plusieurs phrases. Il peut s’enrouler plusieurs fois dans la fenêtre du terminal. Mais c’est toujours une ligne de texte.

Regardons le texte sous sa forme brute:

less moby-dick.txt

moins de moby-dick.txt dans une fenêtre de terminal

Le texte est affiché dans less:

Moby Dick affiché en moins dans une fenêtre de terminal

Le texte s’étend d’un bord de la fenêtre à l’autre, et les retours à la ligne sont laids et ils cassent les mots au milieu.

Nous avons une autre version du fichier avec des lignes courtes:

less short-lines-moby-dick.txt

moins de lignes courtes-moby-dick.txt dans une fenêtre de terminal

Les lignes de ce fichier sont beaucoup plus courtes. Chaque ligne se termine par un caractère de nouvelle ligne.

Version courte ligne de Moby Dick affichée en moins dans une fenêtre de terminal

Si nous utilisons le hexdump commande, nous pouvons regardez les valeurs d’octets dans le fichier et voir les caractères de nouvelle ligne. le -C (canonique) met en forme la sortie pour afficher les valeurs hexadécimales dans le corps principal de l’affichage avec les équivalents de texte dans une colonne sur le côté. Nous allons canaliser la sortie dans less:

hexdump -C short-lines-moby-dick.txt | less

hexdump -C lignes courtes-moby-dick.txt |  moins dans une fenêtre de terminal

En appuyant sur la barre oblique « /« Vous allez entrer lessla fonction de recherche de. Tapez «0a» et appuyez sur Enter. Les caractères de nouvelle ligne seront mis en évidence dans le texte. Vous pouvez faire défiler le fichier et voir où ils apparaissent. Si vous en avez besoin, vous pouvez faire défiler la sortie latéralement à l’aide du Left Arrow et Right Arrow clés.

Sortie de hexdump en moins dans une fenêtre de terminal avec des caractères de nouvelle ligne en surbrillance

Avoir un caractère de nouvelle ligne à la fin de chaque ligne peut être une limitation en soi. Quel que soit le programme ou la fenêtre qui affiche ce texte, les lignes ne peuvent pas s’adapter aux fenêtres d’une largeur plus large que les lignes elles-mêmes. La longueur de la ligne a été limitée par les caractères de nouvelle ligne.

Il y a donc des problèmes avec les lignes longues et les lignes courtes.

Réduire les longues files d’attente

le fold la commande a une option -w (largeur) qui vous permet de spécifier une nouvelle largeur maximale pour une section de texte. Nous afficherons le texte Moby Dick avec une largeur maximale de 50 caractères:

fold -w 50 moby-dick.txt

fold -w 50 moby-dick.txt dans une fenêtre de terminal

Le texte est affiché dans la fenêtre du terminal, avec la nouvelle longueur maximale de fichier. Le fichier d’origine n’est pas modifié. Ce n’est que la sortie de fold qui est reformaté.

Sortie du pli avec le texte Moby Dick affiché avec une longueur maximale de 50 caractères, dans une fenêtre de terminal

À première vue, cela semble beaucoup mieux. Mais les mots sont toujours divisés au milieu à la fin des lignes. C’est certainement plus facile à lire, mais certaines des coupures de mots gênantes sont discordantes.

Bien qu’il semble que la marge de droite du texte oscille vers l’intérieur et l’extérieur, toutes les longueurs de ligne sont identiques. Les lignes qui semblent être un caractère plus court que les autres se terminent par un caractère espace.

Fractionnement des lignes dans les espaces

Nous pouvons utiliser le -s (espaces) pour vous assurer que les lignes ne sont divisées que sur des caractères d’espacement et qu’aucun mot n’est coupé sur deux lignes.

fold -w 50 -s moby-dick.txt

fold -w 50 -s moby-dick.txt dans une fenêtre de terminal

La sortie a maintenant une marge de droite irrégulière, mais elle est plus facile à lire. Tous les mots se terminent sur les lignes sur lesquelles ils ont commencé.

Sortie de fold -w 50 -s moby-dick.txt dans une fenêtre de terminal

Rendre les lignes courtes plus longues

En plus de raccourcir les longues lignes, nous pouvons utiliser fold pour supprimer les longueurs de ligne forcées des lignes plus courtes.

fold -w 75 short-lines-moby-dick.txt

fold -w 75 short-lines-moby-dick.txt dans une fenêtre de terminal

Les caractères de nouvelle ligne sont supprimés et le texte s’ajuste désormais sur ou avant la longueur maximale allouée.

Sortie d'un fold -w 75 short-lines-moby-dick.txt dans une fenêtre de terminal

Rendre les changements permanents

fold impossible de modifier le fichier d’origine. Si vous souhaitez conserver les modifications, vous devrez rediriger la sortie de fold dans un nouveau fichier. Nous redirigerons la sortie dans un fichier appelé «modified-moby-dick.txt».

fold -w 75 -s short-lines-moby-dick.txt > modified-moby-dick.txt

fold -w 75 -s short-lines-moby-dick.txt> modifié-moby-dick.txt dans une fenêtre de terminal » width= »646″ height= »77″ onload= »pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this); » onerror= »this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this); »/></p>
<p>Jetons un œil à notre nouveau fichier:</p>
<pre>less modified-moby-dick.txt</pre>
<p><img loading=

À quoi ressemble notre nouveau fichier?

moins modifié-moby-dick.txt dans une fenêtre de terminal

Le texte s’enroule désormais parfaitement à notre nouvelle largeur de ligne, qui est plus large que les longueurs de ligne du fichier d’origine.

Utilisation de fold avec des flux

On peut utiliser fold pour reformater des flux de texte. Il ne se limite pas à travailler uniquement avec des fichiers. Voyons ce que la sortie brute du journalctl outil ressemble à. le -f (suivre) affiche les dernières entrées de la systemd journal et mises à jour à mesure que de nouvelles entrées arrivent.

sudo journalctl -f

sudo journalctl -f dans une fenêtre de terminal

La sortie s’enroule au bord de la fenêtre du terminal.

Sortie de sudo journalctl -f dans une fenêtre de terminal

Cela n’a pas l’air trop mal, mais pour des raisons de démonstration, réduisons légèrement sa largeur. Nous allons canaliser la sortie de journalctl dans fold. Nous définissons la largeur maximale à 65 caractères et nous coupons les lignes uniquement sur les espaces.

sudo journalctl -f | fold -w 65 -s

sudo journalctl -f |  fold -w 65 -s dans une fenêtre de terminal

L’écran semble un peu moins écrasant et un toucher plus soigné aussi.

Sortie de sudo journalctl -f |  fold -w 65 -s dans une fenêtre de terminal

Les murs de texte solide peuvent sembler impénétrables. Ils sont rebutants et minables à gérer. Lorsque vous avez besoin de voir le bois des arbres, appelez fold et imposer un peu d’ordre.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Pourquoi ne puis-je pas écouter la radio si mon téléphone est équipé d'un récepteur FM?

Pourquoi ne puis-je pas écouter la radio si mon téléphone est équipé d’un récepteur FM?

Masquer le texte de l'icône de la corbeille sous Windows Vista

Masquer le texte de l’icône de la corbeille sous Windows Vista