- 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
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 quetailSe 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 nolessnormal; depois, ao pressionarFnovamente (maiúsculo), o acompanhamento recomeçakubectl logs | less +F), se você apertar<C-c>, o processo inteiro do pipe é encerrado, então não dá para retomar o acompanhamento comF. Nolessexiste a alternativa de parar o acompanhamento com<C-x>, mas a maioria dos shells intercepta essa teclatail, 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 usotailpor causa dessa funçãoA opção
-Xou--no-initfaz 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-Xsó de vez em quando, pode consultar a dica neste tópico-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 lembrarAo depurar logs longos, eu uso
¶ 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 horaHá duas dicas úteis
A opção
-Lpula o pré-processamento do arquivo de entrada, evitando que arquivos de log com nomes comologfile.1,logfile.2sejam tratados incorretamente comonroffquando foram rotacionadosAlém disso, ao pesquisar, se você inserir
Ctrl-Rcomo primeiro caractere, dá para buscar como string literal, não como regexVocê pode configurar atalhos de teclado com o arquivo
~/.lesskey. Eu vinculeispara rolar para trás, então consigo fazer page up/down rapidamente com uma mão usandodesO
lesspadrão do macOS não tem esse recurso, então é preciso instalar via Homebrew (configuração de exemplo, explicação relacionada)Na next-file. A ausência de lesskey no macOS é realmente muito incômodaO
mando OpenBSD passa tags para oless, 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
mdocpara criar documentação semântica, e o OpenBSD usa o programamandocpara renderizá-la (documentação do mdoc)Dá para configurar
^qpara sair dolesssem limpar a tela, enquanto oqnormal continua saindo e limpando a tela como antesÉ preciso executar o
lesssem-X, e isso é especialmente útil quando você precisa consultar a saída anterior, como emgit logO
lesstambém tem um recurso de pipe para comandos externos.Por exemplo, você pode definir uma marca com
mae usar|apara 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
-jpermite ajustar quantas linhas abaixo do topo da tela um resultado de busca será mostradogit log. Depois de selecionar um commit, executogit showcom um atalho, ou até faço operações de fixup diretamente.Usando o debug trap do
bashekeyd-application-mapper, detecto o comando em execução no momento, extraio o hash do commit correspondente e processo isso com um scriptO motor de regex do
less(1)é lento demais. Ao lidar com arquivos grandes, eu faço a busca comgrepouripgrepe depois passo o resultado para olessCom a tecla
s, você pode salvar dados vindos de pipe em um arquivo. É muito mais prático do que copiar e colarlesse, se o resultado for útil, salvo comssó naquele momento.Dá para usar
tee, mas ele sempre deixa um arquivo para trás, então é ineficiente quando isso não é necessário