Como usar o comando fold no Linux

Conteúdo

Um prompt de shell em um PC Linux

El Linux fold O comando traz resultados rebeldes para os calcanhares. Leia grandes trechos de texto, sequências infinitas e fluxos brutos controlando a largura da saída. Aprenda como.

Como as linhas de texto funcionam no terminal Linux

Linux Primeira Regra de Combate: Conheça seu inimigo. Portanto, vamos defini-lo. O que exatamente é uma linha de texto? É uma sequência de personagens (cartas, números, símbolos e espaços em branco) que termina con un byte especial que significainiciar una nueva línea”. Em Linux e Unix, o personagem da nova linha, também chamado de quebra de linha, usado como indicador de fim de linha. Este é um byte com um valor de 0x0a em hexadecimal e dez em decimal.

Diferentes sistemas operacionais usam diferentes valores de byte para indicar o fim de uma linha. O Windows usa uma sequência de dois bytes. Em arquivos de texto do Windows, o caractere de nova linha é imediatamente seguido pelo carácter de retorno de carro, que é 0x0d em hexadecimal e treze em decimal.

Los términossalto de línea” e “retorno de carro” se remontan para a máquina de escrever. A platina o cilindro em torno do qual o papel foi enrolado, Eu estava andando em um carrinho em movimento. O carro se moveu um caractere de largura para a esquerda cada vez que uma tecla foi pressionada. Para começar uma nova linha, pressionou uma alavanca que retornou o carro à sua posição original, e que ele girou o rolo e moveu o papel na altura de uma linha. Esta ação era conhecida como retorno de carro, e rotação do cilindro (e o avanço do papel) era conhecido como quebra de linha.

A alavanca foi substituída por uma chave quando a máquina de escrever foi eletrificada. A chave estava etiquetada como Retorno de Carro ou apenas Retorno. Alguns computadores antigos gostam el BBC Micro Eu ainda usei o nome Return no que agora chamamos de Enter chave inglesa.

Não consigo ver os novos caracteres de linha, como uma regra. Você só pode ver seus efeito. O novo caractere de linha força o software que exibe ou processa texto a iniciar uma nova linha.

Mas, Qual é o problema com filas longas?

Texto sem novos caracteres de linha, ou com muito poucos, será muito largo para ler confortavelmente na janela do terminal. Isso é irritante, Mas isto pode ser feito.

Um obstáculo mais pernicioso é ter que lidar com linhas de tal comprimento que representam um obstáculo para o software que precisa processar, transmitir ou receber o texto. Isso pode ser devido ao comprimento do buffer interno ou outros aspectos do software que você não pode ajustar.

Mas existe uma solução para isso, ligar fold.

Primeiros passos com dobra

Vamos dar uma olhada em uma parte do texto que tem muito, muito longo. Observe que não estamos falando sobre frases aqui. (Mesmo que o texto venha de Moby Dick de Herman Melville, nós temos o melhor dos dois mundos).

Uma linha de texto é tudo, do último caractere de nova linha (ou o início do arquivo se for a primeira linha do arquivo) até o próximo caractere de nova linha, independentemente do que está entre. A linha pode conter muitas frases. Pode aparecer na janela do terminal com frequência. Mas ainda é um solteiro linha de texto.

Vamos ver o texto em sua forma original:

menos moby-dick.txt

O texto é exibido em less:

O texto se estende de uma borda à outra da janela, e os envoltórios de linha são feios e quebram as palavras no meio.

Temos outra versão do arquivo com linhas curtas:

menos short-lines-moby-dick.txt

As linhas neste arquivo são muito mais curtas. Cada linha termina com um novo caractere de linha.

Se usarmos o hexdump comando, nós podemos olhe para os valores de byte dentro do arquivo e veja os novos personagens de linha. a -C Opção (canônico) formata a saída para mostrar valores hexadecimais no corpo principal da tela com os equivalentes de texto em uma coluna ao lado dele. Vamos canalizar a saída para less:

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

Pulsando la barra diagonal/Entrarás lessfunção de busca. Escriba “0uma” e pressione Enter. Os caracteres de nova linha serão destacados no texto. Você pode percorrer o arquivo e ver onde eles aparecem. Sim é necessário, você pode deslocar a saída para os lados usando o Left Arrow e Right Arrow chaves.

Ter um caractere de nova linha no final de cada linha pode ser uma limitação em si. Não importa qual programa ou janela exibe este texto, as linhas não podem ser adaptadas a janelas com uma largura maior do que as próprias linhas. O comprimento da linha foi limitado por caracteres de nova linha.

Por tanto, existem problemas com filas longas e curtas.

Reduza as longas filas

a fold o comando tem uma opção -w (largura) que permite que você especifique uma nova largura máxima para uma seção de texto. Iremos exibir o texto de Moby Dick com uma largura máxima de 50 personagens:

fold -w 50 moby-dick.txt

O texto é exibido na janela do terminal, com o novo comprimento máximo de arquivo. O arquivo original não é modificado. É apenas a saída de fold que é reformatado.

A primeira vista, isso parece muito melhor. Mas as palavras ainda se dividem ao meio no final das linhas. É definitivamente mais fácil de ler, Mas algumas das quebras de palavras estranhas são chocantes.

Mesmo que a margem direita do texto pareça oscilar para dentro e para fora, todos os comprimentos de linha são iguais. As linhas que parecem ser um caractere mais curtas que o resto terminam em um caractere de espaço.

Divisão de linhas em espaços

Podemos usar o -s (espaços) para garantir que as linhas sejam divididas apenas em caracteres de espaço e nenhuma palavra seja dividida em duas linhas.

fold -w 50 -s moby-dick.txt

A saída agora tem margem direita desigual, mas é mais fácil de ler. Todas as palavras terminam nas linhas em que começaram.

Tornando as linhas mais curtas mais longas

Ao mesmo tempo, encurtando as longas filas, podemos usar fold para apagar comprimentos de linha impostos de linhas mais curtas.

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

Os caracteres de nova linha são removidos e o texto agora volta ao comprimento máximo atribuído ou anterior.

Faça alterações permanentes

fold não pode modificar o arquivo original. Se você quiser manter as mudanças, você terá que redirecionar a saída de fold em um novo arquivo. Redirigiremos la salida a un archivo llamado “modificado-moby-dick.txt”.

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

Vamos dar uma olhada em nosso novo arquivo:

menos modificado-moby-dick.txt

Qual é a aparência do nosso novo arquivo??

O texto agora se ajusta perfeitamente à nossa nova largura de linha, que é mais largo do que o comprimento da linha do arquivo original.

Use dobrar com Streams

Podemos usar fold para reformatar sequências de texto. Não se limita a trabalhar apenas com arquivos. Vamos ver qual é a saída bruta do journalctl parece a ferramenta. a -f (Prosseguir) mostra as entradas mais recentes no systemd Diário e atualizações conforme chegam novas entradas.

sudo journalctl -f

A saída envolve a borda da janela do terminal.

Não parece tão ruim, mas para fins de demonstração, vamos reduzir um pouco sua largura. Vamos canalizar a saída de journalctl dentro de fold. Estamos definindo a largura máxima para 65 caracteres e divida as linhas apenas em espaços.

sudo journalctl -f | fold -w 65 -s

A tela parece um pouco menos opressiva e um pouco mais organizada também.


Paredes de texto sólido podem parecer impenetráveis. Eles são desagradáveis ​​e exaustivos de lidar. Quando você precisa ser capaz de ver a madeira das árvores, ligar para fold e impor um pouco de ordem.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.