1 pontos por GN⁺ 2026-01-04 | 1 comentários | Compartilhar no WhatsApp
  • Os vários recursos e combinações de atalhos do comando less permitem executar com eficiência navegação em arquivos, busca, filtragem, favoritos, alternância de opções e mais
  • É possível abrir vários arquivos ao mesmo tempo e mover-se, adicionar e remover arquivos com os comandos :n, :p, :e, :d
  • Com os recursos de busca (/, ?, n, N) e filtragem (&, &!), dá para localizar rapidamente padrões específicos ou excluí-los
  • Com favoritos (m, ') e o recurso de correspondência de parênteses, fica mais simples navegar por documentos longos ou arquivos de código
  • Com alternância de opções durante a execução (-S, -R, -N etc.) e execução de comandos externos (!), é possível ajustar o ambiente imediatamente sem sair do less

Lidando com vários arquivos

  • O less não é apenas uma ferramenta usada no fim de um pipeline; ele pode abrir vários arquivos diretamente como argumentos
    • Exemplo: less file1 file2 file3
  • Mesmo durante a execução, é possível adicionar um novo arquivo com o comando :e file.h
  • Com :n, você vai para o próximo arquivo; com :p, para o arquivo anterior; e com :x ou :rewind, pode voltar ao primeiro arquivo
  • Com o comando :d, é possível remover o arquivo atual da lista

Recursos de navegação

  • Ao digitar número + G, como em 3141G, você vai para um número de linha específico
  • Com número + %, como em 75%, você salta para uma posição percentual do arquivo
  • Com /padrão, faz-se uma busca para frente; com ?padrão, uma busca para trás; e com n/N, move-se para o próximo/resultado anterior
    • !padrão procura linhas que não correspondem, * faz busca em vários arquivos, @ inicia a busca a partir do primeiro arquivo e @* busca em todos os arquivos por completo

Recursos de filtragem

  • Com &padrão, só são exibidas as linhas que correspondem ao padrão, funcionando como um grep interno
  • Com &!padrão, só são exibidas as linhas que não correspondem ao padrão, o que é útil ao explorar arquivos de log

Favoritos e correspondência de parênteses

  • Use m + caractere para definir um favorito e ' + caractere para ir até aquela posição
    • Exemplo: defina favoritos com mo para a seção OPTIONS e me para a seção EXAMPLES, depois navegue com 'o e 'e
  • Se um parêntese como (, [, { estiver na primeira linha da tela, ao digitar esse parêntese você salta para o par correspondente
    • No sentido inverso, se um parêntese de fechamento estiver na última linha, você vai para o parêntese de abertura
  • Também é possível definir pares de parênteses personalizados com alt+ctrl+b e afins

Alternância de opções e execução de comandos externos

  • Durante a execução, ao digitar - seguido de uma opção, é possível mudar a configuração imediatamente
    • -S: alternar quebra de linha
    • -G: destaque de busca
    • -i/-I: configuração de diferenciação entre maiúsculas e minúsculas
    • -R: exibir cores ANSI
    • -N/-n: mostrar/ocultar números de linha
  • Com o comando !, é possível executar comandos externos (!date, !bc etc.)

Variáveis de ambiente e outros recursos

  • Opções usadas com frequência podem ser salvas na variável de ambiente $LESS
    • Exemplo: LESS="-RNe" → exibir cores, mostrar números de linha e encerrar automaticamente no fim do arquivo
  • Com o comando v, é possível abrir o arquivo atual no editor $VISUAL
  • Com os comandos o ou O, é possível salvar em um arquivo o conteúdo lido da entrada padrão
  • O less oferece suporte a salto por tags baseado em ctags, embora seja um recurso pouco usado

1 comentários

 
GN⁺ 2026-01-04
Comentários do Hacker News
  • Foi surpreendente não terem mencionado o recurso follow. No começo ele parece uma UX estranha, mas depois que você se acostuma, em muitos casos ele é melhor que tail
    Se você executar com less +F, ele acompanha em tempo real um fluxo de entrada ou arquivo e exibe as atualizações. Com <C-c> você para o acompanhamento e pode navegar como no less normal; depois, ao pressionar F novamente (maiúsculo), o acompanhamento recomeça

    • Ao acompanhar uma entrada por pipe (kubectl logs | less +F), se você apertar <C-c>, o processo inteiro do pipe é encerrado, então não dá para retomar o acompanhamento com F. No less existe a alternativa de parar o acompanhamento com <C-x>, mas a maioria dos shells intercepta essa tecla
    • No tail, você pode apertar Enter para adicionar uma linha em branco abaixo da última linha. Como isso facilita separar visualmente os resultados de várias execuções, ainda uso tail por causa dessa função
    • Em vez de dizer que é “um pouco estranho”, eu diria que a UX é ruim. Seria melhor que atualizasse automaticamente quando surgissem novos dados, sem exigir troca de modo
    • Seria bom ter um modo em que novas saídas fossem adicionadas automaticamente e, ao mesmo tempo, desse para navegar. Algo como só um toggle de rolagem automática de terminal já bastaria
    • Antigamente eu achava que “follow” era um recurso complicado que tratava descritores de arquivo de forma especial, mas na prática ele só fica fazendo polling depois do EOF. Ou seja, não há diferença essencial entre abrir um arquivo normalmente e o modo de acompanhamento, e o software poderia alternar entre os dois com facilidade
  • A opção -X ou --no-init faz com que a tela não seja limpa ao sair. Eu normalmente prefiro manter a tela para poder consultar o conteúdo anterior ou copiar e colar

    • Se você quiser usar o comportamento de -X só de vez em quando, pode consultar a dica neste tópico
    • Com -E, ele sai imediatamente quando a saída é menor que o tamanho do terminal. Eu costumo usar a combinação “less -SEXIER”. Também é fácil de lembrar
  • Ao depurar logs longos, eu uso & para filtrar só as partes que quero ler e &! para excluir as desnecessárias. Também há suporte a expressões regulares. Às vezes é lento, mas é útil para filtrar na hora

  • Há duas dicas úteis
    A opção -L pula o pré-processamento do arquivo de entrada, evitando que arquivos de log com nomes como logfile.1, logfile.2 sejam tratados incorretamente como nroff quando foram rotacionados
    Além disso, ao pesquisar, se você inserir Ctrl-R como primeiro caractere, dá para buscar como string literal, não como regex

  • Você pode configurar atalhos de teclado com o arquivo ~/.lesskey. Eu vinculei s para rolar para trás, então consigo fazer page up/down rapidamente com uma mão usando d e s
    O less padrão do macOS não tem esse recurso, então é preciso instalar via Homebrew (configuração de exemplo, explicação relacionada)

    • Eu também vinculo N a next-file. A ausência de lesskey no macOS é realmente muito incômoda
  • O man do OpenBSD passa tags para o less, permitindo ir direto para uma seção específica com algo como :t test. É um recurso interessante, mas na prática quase nunca uso.
    Simplesmente pesquisar com / tem uma interface consistente mais intuitiva.
    Aliás, os BSDs usam o conjunto de macros mdoc para criar documentação semântica, e o OpenBSD usa o programa mandoc para renderizá-la (documentação do mdoc)

  • Dá para configurar ^q para sair do less sem limpar a tela, enquanto o q normal continua saindo e limpando a tela como antes

    echo '^q toggle-option -redraw-screen\nq' >> ~/.config/lesskey
    

    É preciso executar o less sem -X, e isso é especialmente útil quando você precisa consultar a saída anterior, como em git log

  • O less também tem um recurso de pipe para comandos externos.
    Por exemplo, você pode definir uma marca com ma e usar |a para enviar para um comando externo o conteúdo da posição atual até essa marca.
    Isso é útil para salvar partes de notícias ou e-mails.
    Além disso, a opção -j permite ajustar quantas linhas abaixo do topo da tela um resultado de busca será mostrado

    • Eu também uso esse recurso de pipe com git log. Depois de selecionar um commit, executo git show com um atalho, ou até faço operações de fixup diretamente.
      Usando o debug trap do bash e keyd-application-mapper, detecto o comando em execução no momento, extraio o hash do commit correspondente e processo isso com um script
  • O motor de regex do less(1) é lento demais. Ao lidar com arquivos grandes, eu faço a busca com grep ou ripgrep e depois passo o resultado para o less

  • Com a tecla s, você pode salvar dados vindos de pipe em um arquivo. É muito mais prático do que copiar e colar

    • Eu também uso bastante esse recurso. Vejo a saída de processos demorados no less e, se o resultado for útil, salvo com s só naquele momento.
      Dá para usar tee, mas ele sempre deixa um arquivo para trás, então é ineficiente quando isso não é necessário