Domine o comando `less` no Linux: Tutoriais, Truques e Macetes!

O comando `less` possibilita a navegação em arquivos de texto, apresentando o conteúdo em telas completas. Inicialmente, pode parecer um dos comandos mais básicos do Linux, mas possui funcionalidades muito além do que aparenta.

A Origem do `less`

Assim como muitos elementos do Linux e Unix, o `less` tem uma história interessante. Ele é derivado do programa `more`, que surgiu em 1978 com a versão 3.0 do Berkeley Software Distribution Unix (3.0BSD). O `more` permitia a leitura de arquivos de texto, exibindo o conteúdo em partes, tela por tela.

A necessidade, como sempre, foi o motor da inovação. A incapacidade das primeiras versões do `more` de retroceder em um arquivo motivou Mark Nudelman a desenvolver o `less`, corrigindo essa limitação específica. Esse projeto começou em 1983, e a primeira versão foi lançada publicamente em 1985. Até outubro de 2019, ele ainda é o mantenedor do `less`.

Será que existe um usuário de Linux que nunca usou o `less`? Mesmo que não o tenha utilizado diretamente para ler um arquivo de texto, é bem provável que tenha usado o comando `man`, que internamente utiliza o `less` para mostrar as páginas de manual.

Este é um comando repleto de recursos e truques.

Por que `less` é superior ao `more`

Ao longo dos anos, o `less` foi constantemente aprimorado, acumulando uma quantidade notável de opções de linha de comando e atalhos de teclado. Uma comparação rápida entre a página de manual do `less` e a página de manual do `more` demonstra claramente a superioridade do `less`.

Embora o `more` tenha corrigido a sua limitação inicial de não poder voltar no texto, essa correção se aplica apenas a arquivos, não a entrada de dados via “pipe”. O `less`, por outro lado, oferece essa flexibilidade.

Com a sua capacidade de navegar arquivos, visualizar múltiplos arquivos, pesquisar texto, marcar e retornar a favoritos e lidar com entrada canalizada, o `less` ganha facilmente. Prefira o `less` ao `more`.

Abrindo um arquivo com `less`

Para abrir um arquivo no `less`, basta fornecer o nome do arquivo na linha de comando:

less Dr-Jekyll-and-Mr-Hyde-001.txt

O arquivo será carregado e exibido, com o início do arquivo visível na janela do terminal. A rolagem com o mouse permite navegar para cima e para baixo no texto.

No teclado, a barra de espaço ou a tecla “Page Down” avançam o texto em uma tela por vez.

A tecla “Page Up” retrocede no arquivo, em direção ao início. As teclas “Home” e “End” levam diretamente ao início e ao fim do arquivo, respectivamente.

O nome do arquivo é mostrado no canto inferior esquerdo da tela. Ao navegar pelo arquivo, a linha inferior é utilizada para exibir mensagens e para inserir comandos.

Pressione “q” para sair do `less`.

Exibindo números de linha

Para visualizar os números das linhas, use a opção `-N` (números de linhas):

less -N Dr-Jekyll-and-Mr-Hyde-001.txt

Os números de linha são úteis para referência em arquivos de log ou outros arquivos que não são escritos em prosa padrão.

Realizando pesquisas dentro do `less`

Para pesquisar um texto no arquivo, pressione “/” e digite a frase desejada. A pesquisa é sensível a maiúsculas e minúsculas. O termo de pesquisa é exibido na linha inferior da tela. Pressione “Enter” para iniciar a pesquisa.

Neste exemplo, o termo de pesquisa é “Enfield,” que pode ser visto na parte inferior da tela.

A busca é feita a partir da página atual até o fim do arquivo. Para pesquisar em todo o arquivo, vá para o início antes de iniciar a busca.

Uma mensagem informará se não houver ocorrências. Caso contrário, a tela será movida para exibir o termo encontrado.

Para encontrar a próxima ocorrência, pressione “n”. Para encontrar a ocorrência anterior, pressione “N”.

Para pesquisar para trás, a partir da sua posição atual até o início do arquivo, pressione “?” e digite o termo de pesquisa. Novamente, “n” para a próxima e “N” para a anterior.

É importante notar que, na pesquisa para trás, o próximo item correspondente (“n”) é o mais próximo do topo do arquivo, e o item anterior (“N”) é o mais próximo do fim. Portanto, “n” e “N” invertem a direção da pesquisa quando se busca para trás.

Abrindo um arquivo com um termo de pesquisa predefinido

A opção `-p` (padrão) permite que o `less` inicie a exibição já com a primeira ocorrência do termo pesquisado, em vez de mostrar a primeira página do arquivo. A menos, é claro, que o termo de pesquisa seja encontrado já na primeira página.

Não deve haver espaço entre o `-p` e o termo de pesquisa:

less -pEnfield Dr-Jekyll-and-Mr-Hyde-001.txt

O arquivo é exibido com o primeiro termo de pesquisa destacado.

Navegando em `less`: as teclas mais úteis

Utilize estas teclas para navegar e pesquisar no arquivo:

Avançar uma linha: seta para baixo, Enter, ou j
Retroceder uma linha: seta para cima, y ​​ou k
Avançar uma página: barra de espaço ou Page Down
Retroceder uma página: Page Up ou b
Rolar para a direita: Seta para a direita
Rolar para a esquerda: seta para a esquerda
Ir para o início do arquivo: Home ou g
Ir para o fim do arquivo: End ou G
Ir para uma linha específica: digite o número da linha e pressione “g”
Pular para uma porcentagem no arquivo: digite a porcentagem e pressione “p” ou “%”. (Você pode usar valores decimais, como “27,2” e pressionar “p” ou “%”. A razão para usar decimais não é muito clara).
Pesquisar para frente: pressione “/” e digite a pesquisa, como “/Jekyll”, e pressione Enter
Pesquisar para trás: pressione “?” e digite a pesquisa, como “/Hyde”, e pressione Enter
Próximo item de pesquisa correspondente: n
Item de pesquisa correspondente anterior: N
Sair: q

Eliminando linhas em branco

A opção `-s` (espremer linhas em branco) remove sequências de linhas em branco, substituindo-as por uma única linha em branco.

Existem algumas linhas em branco consecutivas em nosso arquivo de exemplo. Vamos ver como o `less` as trata com a opção `-s`:

less -s Dr-Jekyll-and-Mr-Hyde-001.txt

Todas as sequências de linhas em branco foram substituídas por uma única linha em branco.

Visualizando múltiplos arquivos

O `less` permite abrir vários arquivos simultaneamente, navegando de um para outro. Ele mantém o controle da posição em cada um deles.

less Dr-Jekyll-and-Mr-Hyde-001.txt Dr-Jekyll-and-Mr-Hyde-002.txt

Os arquivos são abertos, e o primeiro é exibido. O visor mostra qual arquivo está aberto e quantos arquivos foram carregados.

Para visualizar o próximo arquivo, pressione “:” e depois “n”.

A tela mudará para mostrar o segundo arquivo, e a linha inferior será atualizada para indicar que você está no segundo arquivo.

Para voltar ao arquivo anterior, digite “:” e pressione “p”.

Utilizando Marcadores

O `less` permite inserir marcadores para retornar facilmente a uma passagem específica. Cada marcador é identificado por uma letra. Para marcar a linha atual, pressione “m” e em seguida a letra desejada, como “a”.

Ao pressionar “m”, a linha inferior do visor exibirá um prompt, aguardando que você pressione uma tecla de letra.

Assim que você pressiona uma letra, o prompt desaparece.

De qualquer outra posição no arquivo, você pode retornar a um marcador pressionando o apóstrofo (ou aspas simples) “‘” e depois a letra do marcador desejado. Ao pressionar “‘”, você será solicitado a inserir o marcador para o qual deseja ir.

Pressione a letra do marcador para o qual deseja retornar, e a seção do arquivo será exibida.

Usando entrada via “pipe” com `less`

O `less` pode exibir dados provenientes de um fluxo de texto canalizado (“pipe”) da mesma forma como se fosse um arquivo.

O comando `dmesg` mostra as mensagens do buffer de anel do kernel. Podemos canalizar a saída do `dmesg` para o `less` usando o seguinte comando:

dmesg | less

A saída do `dmesg` é exibida.

É possível navegar e pesquisar na entrada canalizada como se fosse um arquivo. Para ver as mensagens mais recentes, pressione “End” para ir para o final do arquivo.

Conforme novas mensagens chegam, é necessário pressionar “End” para forçar o `less` a exibir a parte inferior do arquivo. Para que o `less` exiba sempre a parte inferior do texto, mesmo com a chegada de novos dados, use a opção `+F` (avançar). Note o uso de `+`, e não `-`, como sinalizador de opção.

dmesg | less +F

O sinalizador `+` faz com que o `less` trate a opção como se você a tivesse usado dentro do próprio `less`. Portanto, caso se esqueça de usar a opção `+F`, pressione “F” dentro do `less`.

O `less` exibe a parte inferior do texto, que mostra as mensagens mais recentes do `dmesg`. Uma mensagem indica que ele está aguardando mais dados. Conforme novas mensagens do kernel surgem, a tela rola para que você veja sempre as mais recentes.

Nesse modo, a rolagem não é possível; ele se dedica a exibir o final do texto canalizado. Para sair desse modo, pressione Ctrl+c e você retornará ao modo interativo normal do `less`.

Editando arquivos com `less`

É possível editar arquivos com `less`, ou melhor, mais ou menos. O comando não edita o arquivo diretamente, mas ao digitar “v” durante a visualização, o arquivo é aberto no seu editor de texto padrão. Ao sair do editor, você retorna ao `less`.

Pressione “v” durante a visualização de um arquivo no `less`:

O arquivo é aberto no editor padrão, neste caso o nano:

Ao fechar o editor, você retorna ao `less`.

Em Resumo

Por mais paradoxal que possa parecer, neste caso, menos é mais.