Cómo usar el comando fold en Linux

Un indicador de shell en una PC con Linux

El Linux fold El comando trae resultados rebeldes a los talones. Lea grandes trozos de texto, cadenas interminables y secuencias sin formato controlando el ancho de la salida. Aprender cómo.

Cómo funcionan las líneas de texto en la terminal de Linux

Primera regla del combate de Linux: conoce a tu enemigo. Así que vamos a definirlo. ¿Qué es exactamente una línea de texto? Es una secuencia de caracteres (letras, números, símbolos y espacios en blanco) que termina con un byte especial que significa «comenzar una nueva línea». En Linux y Unix, el personaje de nueva línea, también llamado salto de línea, se utiliza como indicador de fin de línea. Este es un byte con un valor de 0x0a en hexadecimal y diez en decimal.

Los diferentes sistemas operativos utilizan diferentes valores de bytes para indicar el final de una línea. Windows usa una secuencia de dos bytes. En archivos de texto de Windows, el carácter de nueva línea es seguido inmediatamente por el carácter de retorno de carro, que es 0x0d en hexadecimal y trece en decimal.

Los términos «salto de línea» y «retorno de carro» se remontan a la maquina de escribir. La platina el cilindro alrededor del cual estaba envuelto el papel, estaba montado en un carro móvil. El carro se movía el ancho de un carácter hacia la izquierda cada vez que pulsaba una tecla. Para comenzar una nueva línea, presionó una palanca que devolvió el carro a su posición original, y que hizo girar el rodillo y movió el papel hacia arriba a la altura de una línea. Esta acción se conocía como retorno del carro, y la rotación del cilindro (y el avance del papel) se conocía como salto de línea.

La palanca fue reemplazada por una llave cuando la máquina de escribir se electrificó. La clave tenía la etiqueta Retorno de carro o simplemente Retorno. Algunas computadoras tempranas como el BBC Micro todavía usé el nombre Return en lo que ahora llamamos el Enter llave.

No puede ver caracteres de nueva línea, como regla. Solo puedes ver su efecto. El carácter de nueva línea obliga al software que muestra o procesa texto a iniciar una nueva línea.

Pero, ¿cuál es el problema con las filas largas?

El texto sin caracteres de nueva línea o con muy pocos caracteres será demasiado ancho para leerlo cómodamente en la ventana de la terminal. Eso es molesto, pero se puede hacer.

Un problema más pernicioso es tener que lidiar con líneas de tal longitud que representan un problema para el software que necesita procesar, transmitir o recibir el texto. Esto puede deberse a la longitud del búfer interno u otros aspectos del software que no puede ajustar.

Pero hay una solución para eso, llamada fold.

Primeros pasos con pliegue

Echemos un vistazo a una parte del texto que tiene líneas muy, muy largas. Tenga en cuenta que no estamos hablando de oraciones aquí. (Aunque el texto proviene de Moby Dick de Herman Melville, tenemos lo mejor de ambos mundos).

Una línea de texto es todo, desde el último carácter de nueva línea (o el inicio del archivo si es la primera línea del archivo) hasta el siguiente carácter de nueva línea, independientemente de lo que esté en el medio. La línea puede contener muchas oraciones. Puede aparecer en la ventana de la terminal muchas veces. Pero sigue siendo una sola línea de texto.

Veamos el texto en su forma original:

less moby-dick.txt

menos moby-dick.txt en una ventana de terminal

El texto se muestra en less:

Moby Dick se muestra en menos en una ventana de terminal

El texto se extiende desde un borde de la ventana hasta el otro, y los ajustes de línea son feos y rompen palabras en el medio.

Tenemos otra versión del archivo con líneas cortas:

less short-lines-moby-dick.txt

menos líneas cortas-moby-dick.txt en una ventana de terminal

Las líneas de este archivo son mucho más cortas. Cada línea termina con un carácter de nueva línea.

La versión de línea corta de Moby Dick se muestra en menos en una ventana de terminal

Si usamos el hexdump comando, podemos mira los valores de bytes dentro del archivo y ver los personajes de nueva línea. los -C La opción (canónica) formatea la salida para mostrar valores hexadecimales en el cuerpo principal de la pantalla con los equivalentes de texto en una columna al lado. Canalizaremos la salida a less:

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

hexdump -C líneas-cortas-moby-dick.txt |  menos en una ventana de terminal

Pulsando la barra diagonal «/«Entrarás lessfunción de búsqueda. Escriba «0a» y presione Enter. Los caracteres de nueva línea se resaltarán en el texto. Puede desplazarse por el archivo y ver dónde aparecen. Si es necesario, puede desplazar la salida hacia los lados utilizando el Left Arrow y Right Arrow llaves.

Salida de hexdump en menos en una ventana de terminal con caracteres de nueva línea resaltados

Tener un carácter de nueva línea al final de cada línea puede ser una limitación en sí mismo. No importa qué programa o ventana muestre este texto, las líneas no se pueden adaptar a ventanas con un ancho más ancho que las propias líneas. La longitud de la línea ha sido limitada por los caracteres de nueva línea.

Por tanto, hay problemas tanto con las colas largas como con las cortas.

Reducir las colas largas

los fold el comando tiene una opción -w (ancho) que le permite especificar un nuevo ancho máximo para una sección de texto. Mostraremos el texto de Moby Dick con un ancho máximo de 50 caracteres:

fold -w 50 moby-dick.txt

fold -w 50 moby-dick.txt en una ventana de terminal

El texto se muestra en la ventana del terminal, con la nueva longitud máxima de archivo. El archivo original no se modifica. Es solo la salida de fold que está reformateado.

Salida de pliegue con texto de Moby Dick mostrado con una longitud máxima de 50 caracteres, en una ventana de terminal

A primera vista, esto se ve mucho mejor. Pero las palabras todavía se dividen en el medio al final de las líneas. Definitivamente es más fácil de leer, pero algunos de los cortes de palabras incómodos son discordantes.

Aunque parece que el margen derecho del texto oscila hacia adentro y hacia afuera, todas las longitudes de las líneas son iguales. Las líneas que parecen ser un carácter más cortas que el resto terminan en un carácter de espacio.

División de líneas en espacios

Podemos usar el -s (espacios) para asegurarse de que las líneas solo se dividan en caracteres de espacio y que no haya palabras divididas en dos líneas.

fold -w 50 -s moby-dick.txt

fold -w 50 -s moby-dick.txt en una ventana de terminal

La salida ahora tiene un margen derecho irregular, pero es más fácil de leer. Todas las palabras terminan en las líneas en las que comenzaron.

Salida de fold -w 50 -s moby-dick.txt en una ventana de terminal

Haciendo líneas cortas más largas

Además de acortar las filas largas, podemos utilizar fold para eliminar las longitudes de línea forzadas de líneas más cortas.

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

fold -w 75 short-lines-moby-dick.txt en una ventana de terminal

Los caracteres de nueva línea se eliminan y el texto ahora se ajusta a la longitud máxima asignada o antes.

Salida de un pliegue -w 75 short-lines-moby-dick.txt en una ventana de terminal

Hacer cambios permanentes

fold no se puede modificar el archivo original. Si desea conservar los cambios, deberá redirigir la salida de fold en un nuevo archivo. Redirigiremos la salida a un archivo llamado «modified-moby-dick.txt».

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

1608360318 290 Como usar el comando fold en modificado-moby-dick.txt en una ventana de terminal» width=»646″ height=»77″ onload=»pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);» onerror=»this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);»>

Echemos un vistazo a nuestro nuevo archivo:

less modified-moby-dick.txt

menos modificado-moby-dick.txt en una ventana de terminal

¿Cómo se ve nuestro nuevo archivo?

menos modificado-moby-dick.txt en una ventana de terminal

El texto ahora se ajusta perfectamente a nuestro nuevo ancho de línea, que es más ancho que las longitudes de línea del archivo original.

Usar plegar con Streams

Nosotros podemos usar fold para reformatear secuencias de texto. No se limita a trabajar únicamente con archivos. Veamos cuál es la salida sin procesar del journalctl parece la herramienta. los -f (seguir) muestra las entradas más recientes en el systemd diario y actualizaciones a medida que llegan nuevas entradas.

sudo journalctl -f

sudo journalctl -f en una ventana de terminal

La salida se envuelve en el borde de la ventana de la terminal.

Salida de sudo journalctl -f en una ventana de terminal

No se ve tan mal, pero en aras de la demostración, reduzcamos ligeramente su ancho. Vamos a canalizar la salida de journalctl dentro fold. Estamos configurando el ancho máximo en 65 caracteres y dividimos las líneas solo en espacios.

sudo journalctl -f | fold -w 65 -s

sudo journalctl -f |  pliegue -w 65 -s en una ventana de terminal

La pantalla se ve un poco menos abrumadora y un poco más ordenada también.

Salida de sudo journalctl -f |  pliegue -w 65 -s en una ventana de terminal

Las paredes de texto sólido pueden parecer impenetrables. Son desagradables y desgastantes de tratar. Cuando necesite poder ver la madera de los árboles, llame a fold e imponer un poco de orden.

Artículos Recientes

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ir arriba