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 significa “iniciar 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érminos “salto 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 less
funçã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.