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.