Sous Linux fold
La commande apporte des résultats rebelles aux talons. Lire de gros morceaux de texte, chaînes sans fin et flux bruts contrôlant la largeur de la sortie. Apprendre.
Comment fonctionnent les lignes de texte dans le terminal Linux
Linux Première règle de combat: connais ton ennemi. Nous allons donc le définir. Qu'est-ce qu'une ligne de texte exactement? C'est une suite de caractères (des lettres, nombres, symboles et blancs) que termina con un byte especial que significa “iniciar una nueva línea”. Sous Linux et Unix, le nouveau caractère de ligne, aussi appelé saut de ligne, utilisé comme indicateur de fin de ligne. Il s'agit d'un octet avec une valeur de 0x0a dans hexadécimal et dix en décimal.
Différents systèmes d'exploitation utilisent différentes valeurs d'octets 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 personnage de retour de voiture, qui est 0x0d en hexadécimal et treize en décimal.
Petits caractères “salto de línea” et “retour de voiture” se remontan à la machine à écrire. Le platine le cylindre autour duquel le papier était enroulé, Je montais sur un chariot de déménagement. Le chariot se déplaçait d'une largeur de caractère vers la gauche chaque fois qu'une touche était enfoncée. Pour commencer une nouvelle ligne, appuyé sur un levier qui a ramené le chariot à sa position d'origine, et qu'il a fait tourner le rouleau et a déplacé le papier à la hauteur d'une ligne. Cette action était connue sous le nom de retour chariot, et rotation du cylindre (et l'avancée du papier) c'était connu sous le nom de saut de ligne.
Le levier a été remplacé par une clé lorsque la machine à écrire a été électrifiée. La clé était étiquetée Carriage Return ou simplement Return. Certains premiers ordinateurs comme el BBC Micro j'ai encore utilisé le nom Return
dans ce que nous appelons maintenant le Enter
clé.
Impossible de voir les nouveaux caractères de ligne, comme règle. Vous ne pouvez voir que leur effet. 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?
Texte sans caractères de nouvelle ligne, ou avec très peu, il sera trop large pour lire confortablement dans la fenêtre du terminal. C'est ennuyeux, Mais cela peut être fait.
Un obstacle plus pernicieux est de devoir faire face à des lignes d'une longueur telle qu'elles représentent un obstacle pour le logiciel qui doit traiter, transmettre ou recevoir le texte. Cela peut être dû à la longueur de la 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 fold
.
Premiers pas avec pli
Examinons une partie du texte qui a très, très long. Veuillez noter que nous ne parlons pas de phrases ici. (Même si le texte vient de Moby Dick d'Herman Melville, nous avons le meilleur des deux mondes).
Une ligne de texte c'est tout, du dernier caractère de nouvelle ligne (ou le début du fichier s'il s'agit de la première ligne du fichier) jusqu'au prochain caractère de nouvelle ligne, peu importe ce qu'il y a entre les deux. La ligne peut contenir plusieurs phrases. Peut apparaître fréquemment dans la fenêtre du terminal. Mais c'est quand même un celibataire ligne de texte.
Voyons le texte dans sa forme originale:
moins moby-dick.txt
Le texte s'affiche dans less
:
Le texte s'étend d'un bord à l'autre de la fenêtre, et les retours à la ligne sont moches et cassent les mots au milieu.
Nous avons une autre version du fichier avec des lignes courtes:
moins de lignes courtes-moby-dick.txt
Les lignes de ce fichier sont beaucoup plus courtes. Chaque ligne se termine par un nouveau caractère de ligne.
Si nous utilisons le hexdump
commander, pouvons regardez les valeurs d'octets à l'intérieur du fichier et voir les nouveaux caractères de ligne. Les -C
L'option (canonique) formate la sortie pour afficher les valeurs hexadécimales dans le corps principal de l'écran avec les équivalents textuels dans une colonne à côté. Nous canaliserons la sortie vers less
:
hexdump -C short-lines-moby-dick.txt | moins
Pulsando la barra diagonal “/
“Entrarás less
fonction de recherche. Scribe “0une” 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 c'est nécessaire, vous pouvez décaler la sortie latéralement en utilisant le Left Arrow
et Right Arrow
clés.
Avoir un caractère de nouvelle ligne à la fin de chaque ligne peut être une limitation en soi. Peu importe quel programme ou quelle fenêtre affiche ce texte, les lignes ne peuvent pas être adaptées aux fenêtres dont la largeur est plus large que les lignes elles-mêmes. La longueur de la ligne a été limitée par des caractères de nouvelle ligne.
Pourtant, il y a des problèmes avec les files d'attente longues et courtes.
Réduire les longues files d'attente
Les 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 de Moby Dick avec une largeur maximale de 50 personnages:
plier -w 50 moby-dick.txt
Le texte s'affiche dans la fenêtre du terminal, avec la nouvelle longueur maximale de fichier. Le fichier d'origine n'est pas modifié. C'est juste la sortie de fold
qui est reformaté.
À première vue, ça a l'air beaucoup mieux. Mais les mots se sont quand même coupés en deux à la fin des lignes. C'est certainement plus facile à lire, Mais certaines des coupures de mots maladroites sont choquantes.
Même si la marge droite du texte semble aller et venir, toutes les longueurs de ligne sont égales. Les lignes qui semblent être un caractère plus courtes que les autres se terminent par un espace.
Division des lignes en espaces
Nous pouvons utiliser le -s
(les espaces) pour s'assurer que les lignes ne sont divisées qu'en caractères d'espacement et qu'aucun mot n'est divisé sur deux lignes.
plier -w 50 -s moby-dick.txt
La sortie a maintenant une marge droite inégale, mais c'est plus facile à lire. Tous les mots se terminent sur les lignes sur lesquelles ils ont commencé.
Rallonger les lignes plus courtes
En raccourcissant les longues files d'attente, on peut utiliser fold
pour effacer les longueurs de ligne imposées des lignes plus courtes.
plier -w 75 lignes courtes-moby-dick.txt
Les caractères de nouvelle ligne sont supprimés et le texte est désormais renvoyé à la longueur maximale allouée ou plus tôt.
Apporter des modifications permanentes
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. Redirigiremos la salida a un archivo llamado “moby-dick.txt modifié”.
plier -w 75 -s short-lines-moby-dick.txt > moby-dick.txt modifié
Jetons un œil à notre nouveau fichier:
moins modifié-moby-dick.txt
A quoi ressemble notre nouveau fichier?
Le texte s'ajuste maintenant bien à notre nouvelle largeur de ligne, qui est plus large que les longueurs de ligne du fichier d'origine.
Utiliser le pliage avec Streams
On peut utiliser fold
pour reformater des séquences de texte. Il ne se limite pas à travailler avec des fichiers uniquement. Voyons quelle est la sortie brute du journalctl
ressemble à l'outil. Les -f
(Continuez) affiche les entrées les plus récentes dans le systemd
du quotidien et mises à jour au fur et à mesure que de nouvelles entrées arrivent.
sudo journalctl -f
La sortie s'enroule autour du bord de la fenêtre du terminal.
ça a pas l'air si mal, mais par souci de démonstration, réduisons un peu sa largeur. Canalisons la sortie de journalctl
Dans fold
. Nous fixons la largeur maximale à 65 caractères et diviser les lignes uniquement en espaces.
sudo journalctl -f | plier -w 65 -s
L'écran a l'air un peu moins écrasant et un peu plus net aussi.
Les murs de texte solides peuvent sembler impénétrables. Ils sont désagréables et épuisants à gérer. Quand il faut pouvoir voir le bois des arbres, appeler pour fold
et impose un peu d'ordre.