Categories: Tecnologia

Como usar o comando fold no Linux

Fatmawati Achmad Zaenuri / Shutterstock

O foldcomando do Linux traz resultados indisciplinados. Leia grandes pedaços de texto, strings 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 definir isso. O que exatamente é uma linha de texto? É uma sequência de caracteres – letras, números, símbolos e espaços em branco – que termina por um byte especial que significa “iniciar uma nova linha”. No Linux e no Unix, o caractere de nova linha , também chamado de alimentação 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 é seguido imediatamente pelo caractere de retorno de carro , que é 0x0d em hexadecimal e treze em decimal.

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

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

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

Mas qual é o problema com linhas longas?

Texto sem, ou com poucos caracteres de nova linha, será muito largo para ser lido confortavelmente na janela do terminal. Isso é irritante, mas é possível.

Uma questão mais perniciosa é ter que lidar com linhas de tal comprimento que representem um problema para o software que precisa processar, transmitir ou receber o texto. Isso pode ser causado por comprimentos de buffer interno ou outros aspectos do software que você não pode ajustar.

Mas há uma solução para isso, chamado fold.

Primeiros passos com dobra

Vamos dar uma olhada em uma parte do texto que tem linhas muito, muito longas. Observe que não estamos falando de frases aqui. (Embora o texto venha do Moby Dick de Herman Melville, 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 esteja entre os dois. A linha pode conter muitas frases. Ele pode aparecer na janela do terminal muitas vezes. Mas ainda é uma única linha de texto.

Vejamos o texto em sua forma bruta:

menos moby-dick.txt

O texto é exibido em less:

O texto se estende de uma borda a outra da janela, e os contornos 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 é encerrada com um caractere de nova linha.

Se usarmos o hexdumpcomando, podemos olhar os valores de byte dentro do arquivo e ver os caracteres de nova linha. A -Copção (canônica) formata a saída para mostrar valores hexadecimais no corpo principal da tela com os equivalentes de texto em uma coluna ao lado. Vamos canalizar a saída para less:

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

Ao pressionar a barra “ /”, você entrará lessna função de pesquisa de. Digite “0a” e pressione Enter. Os caracteres de nova linha serão destacados no texto. Você pode percorrer o arquivo e ver onde eles aparecem. Se necessário, você pode rolar a saída para os lados usando as teclas Left Arrowe Right Arrow.

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

Portanto, existem problemas com linhas longas e linhas curtas semelhantes.

Reduzindo Longas Linhas

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

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 foi alterado. É apenas a saída foldque é reformatada.

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

Embora pareça que a margem direita do texto oscila 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 acabam em um caractere de espaço.

Divisão de linhas em espaços

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

fold -w 50 -s moby-dick.txt

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

Tornando as linhas curtas mais longas

Além de tornar as linhas longas mais curtas, podemos usar foldpara remover os comprimentos de linha obrigatórios de linhas mais curtas.

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

Os caracteres de nova linha são removidos e o texto agora quebra no ou antes do comprimento máximo atribuído.

Tornando as alterações permanentes

foldnão pode modificar o arquivo original. Se quiser manter as alterações, você terá que redirecionar a saída foldpara um novo arquivo. Vamos redirecionar a saída para um arquivo denominado “modified-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

Como está nosso novo arquivo?

O texto agora está se ajustando perfeitamente em nossa nova largura de linha, que é maior do que o comprimento de linha do arquivo original.

Usando o fold com streams

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

sudo journalctl -f

A saída quebra na 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 journalctlpara fold. Estamos definindo a largura máxima para 65 caracteres e quebrando as linhas apenas em espaços.

sudo journalctl -f | fold -w 65 -s

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


As paredes de texto sólido podem parecer impenetráveis. Eles são desanimadores e difíceis de lidar. Quando você precisar ver o bosque das árvores, invoque folde imponha um pouco de ordem.

maisroot

Recent Posts

O novo aplicativo “PC Manager” da Microsoft se parece muito com o CCleaner

Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…

1 ano ago

Como reiniciar um PS4

Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…

1 ano ago

Veja por que as reticências são tão assustadoras ao enviar mensagens de texto…

A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…

1 ano ago

O telescópio James Webb acaba de capturar os “Pilares da Criação”

A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…

1 ano ago

Você poderá baixar o Proton Drive mais cedo do que pensa

O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…

1 ano ago

Como aumentar o zoom no Photoshop

Para ver suas fotos mais de perto ou para uma edição precisa , você pode…

1 ano ago