Header Ads

Como usar o comando fold no Linux

Fatmawati Achmad Zaenuri / Shutterstock

O comando fold do Linux traz uma saída indisciplinada para o calcanhar. Leia grandes pedaços de texto, seqüências infinitas e fluxos não formatados controlando a largura da saída. Aprenda como.

Como as linhas de texto funcionam no terminal Linux

Primeira regra de combate do Linux: conheça seu inimigo. Então, vamos defini-lo. O que exatamente é uma linha de texto? É uma sequência de caracteres, letras, números, símbolos e espaços em branco que é finalizada por um byte especial que significa "“ iniciar uma nova linha". ” No Linux e Unix, o caractere de nova linha, também chamado de avanço de linha, é usado como o indicador de fim de linha. Este é um byte com um valor de 0x0a em hexadecimal e dez em decimal.

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

Os termos “ avanço de linha ” e “ retorno de carro ” datam da máquina de escrever. O cilindro, o cilindro em que o papel estava enrolado, foi montado em uma carruagem móvel. O carro movia a largura de um caractere para a esquerda cada vez que você pressionava uma tecla. Para iniciar uma nova linha, você pressionou uma alavanca que trouxe o carro de volta à sua posição original, que girou o rolo e moveu o papel para cima pela altura de uma linha. Essa ação era conhecida como retorno de carro, e a rotação do cilindro (e o avanço do papel) era conhecida como avanço de linha.

A alavanca foi substituída por uma chave quando a máquina de escrever ficou eletrificada. A chave foi rotulada Retorno de carro ou apenas Retorno. Alguns computadores antigos, como o BBC Micro, ainda usavam o nome Return no que chamamos agora de tecla Enter.

Você geralmente não vê caracteres de nova linha. Você só pode ver o efeito deles. O caractere de nova linha força o software que exibe ou processa o texto a iniciar uma nova linha.

Mas qual é o problema das longas filas?

O texto sem, ou com muito poucos caracteres de nova linha, será muito amplo para ser lido confortavelmente na janela do terminal. Isso é chato, mas é factível.

Um problema mais pernicioso é ter que lidar com linhas de tamanho que causem um problema ao software que precisa processar, transmitir ou receber o texto. Isso pode ser causado por comprimentos internos de buffer ou outros aspectos do software que você não pode ajustar.

Mas há uma correção para isso, chamada fold.

Primeiros passos com dobra

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

Uma linha de texto é tudo, desde o ú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 estiver no meio. A linha pode conter muitas frases. Pode envolver a janela do terminal várias vezes. Mas ainda é uma única linha de texto.

Vamos analisar o texto em sua forma bruta:

 menos moby-dick. txt 

O texto é exibido em menos:

O texto se estende de uma borda da janela para a outra, e as linhas são feias e quebram as palavras no meio.

Temos outra versão do arquivo com linhas curtas:

 menos linhas curtas-moby-dick. txt 

As linhas neste arquivo são muito mais curtas. Cada linha é finalizada com um caractere de nova linha.

Se usarmos o comando hexdump, podemos observar os valores de bytes no arquivo e ver os caracteres da nova linha. A opção -C (canônica) formata a saída para mostrar valores hexadecimais no corpo principal da exibição com os equivalentes de texto em uma coluna ao lado. Vamos canalizar a saída em menos:

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

Pressionando a barra “ / ” você digitará a função de pesquisa de menos. Digite “ 0a ” e pressione Enter. Os caracteres da nova linha serão destacados no texto. Você pode rolar pelo arquivo e ver onde eles aparecem. Se necessário, você pode rolar a saída para o lado usando as teclas de seta para a esquerda e seta para a direita.

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 exiba esse texto, as linhas não podem se adaptar a janelas com largura maior que as próprias linhas. O comprimento da linha foi limitado pelos caracteres da nova linha.

Portanto, há problemas com linhas longas e linhas curtas.

Reduzindo linhas longas

O comando fold tem uma opção -w (largura) que permite especificar uma nova largura máxima para uma seção do texto. Vamos exibir o texto Moby Dick com uma largura máxima de 50 caracteres:

 dobra -w 50 moby-dick. txt 

O texto é exibido na janela do terminal, com o novo tamanho máximo de arquivo. O arquivo original não foi alterado. É apenas a saída da dobra que é reformatada.

À primeira vista, isso parece muito melhor. Mas as palavras ainda estão sendo divididas no meio no final das linhas. É definitivamente mais fácil ler, mas algumas das quebras de palavras estranhas são chocantes.

Embora pareça que a margem direita do texto oscila dentro e fora, todos os comprimentos de linha são iguais. As linhas que parecem ter um caractere mais curto que o restante terminam em um caractere de espaço.

Divisão de linhas nos espaços

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

 dobra -w 50 -s moby-dick. txt 

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

Aumentando as linhas curtas

Além de tornar as linhas longas mais curtas, podemos usar a dobra para remover os comprimentos aplicados das linhas mais curtas.

 dobra -w 75 linhas-pequenas-moby-dick. txt 

Os caracteres da nova linha são removidos e o texto agora é agrupado antes ou no comprimento máximo alocado.

Tornando as alterações permanentes

fold não pode modificar o arquivo original. Se você deseja manter as alterações, precisará redirecionar a saída da dobra para um novo arquivo. Nós redirecionaremos a saída para um arquivo chamado "modified-moby-dick. txt." ”

 dobra -w 75 -s linhas-curtas-moby-dick. txt > moby-dick. txt modificado 

Vamos dar uma olhada no nosso novo arquivo:

 menos modificado-moby-dick. txt 

Como fica o nosso novo arquivo?

Agora, o texto está agrupado de maneira organizada em nossa nova largura de linha, que é maior que o comprimento da linha do arquivo original.

Usando dobra com fluxos

Podemos usar fold para reformatar fluxos de texto. Não se restringe a trabalhar apenas com arquivos. Vamos ver como é a saída bruta da ferramenta journalctl. A opção -f (seguir) mostra as entradas mais recentes no diário systemd e atualiza à medida que novas entradas chegam.

 sudo journalctl -f 

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

Não parece muito ruim, mas por uma questão de demonstração, vamos reduzir um pouco sua largura. Nós vamos canalizar a saída do journalctl para o fold. Estamos definindo a largura máxima para 65 caracteres e estamos quebrando as linhas apenas em espaços.

 sudo journalctl -f | dobra -w 65 -s 

A tela parece um pouco menos impressionante e um toque mais limpo também.

Paredes de texto sólido podem parecer impenetráveis. Eles são desanimadores e minuciosos para lidar. Quando precisar ver a madeira das árvores, faça uma dobra e imponha um pouco de ordem.

Via: How to Geek

Veja Também:

Nenhum comentário