5 pontos por GN⁺ 2023-12-01 | 1 comentários | Compartilhar no WhatsApp

Resumo: introdução à nova ferramenta de busca em linha de comando ripgrep

  • ripgrep é uma nova ferramenta de busca em linha de comando que combina a usabilidade do The Silver Searcher com o desempenho do GNU grep.
  • Fornece binários para Linux, Mac e Windows e foi escrita em Rust.
  • Destaca-se em desempenho e precisão tanto na busca em arquivos únicos quanto em diretórios de grande porte.
  • Tem excelente suporte a Unicode e, em geral, é mais rápida do que ferramentas que usam memory map.

Introdução ao ripgrep

Vantagens

  • É mais rápido do que outras ferramentas de busca e não pesquisa arquivos ignorados por .gitignore.
  • Oferece recursos para pesquisar apenas tipos específicos de arquivo ou excluí-los.
  • Suporta muitos recursos do grep e sempre oferece suporte a Unicode.
  • Pode usar opcionalmente o mecanismo de expressões regulares PCRE2.
  • Suporta diversos encodings de texto e busca em arquivos compactados.
  • Suporta filtros arbitrários de pré-processamento de entrada.

Opiniões contrárias

  • Não segue o padrão POSIX e é menos universal do que o grep.
  • Alguns recursos ou bugs específicos presentes em outras ferramentas podem não existir no ripgrep.
  • Em certos casos extremos de desempenho, o ripgrep pode ser mais lento do que outras ferramentas.

Instalação

  • O nome do binário do ripgrep é rg e ele pode ser instalado em várias plataformas.
  • Há métodos de instalação para Homebrew, Archlinux e programadores Rust.
  • Também é possível compilá-lo diretamente do código-fonte.

Tour rápido

  • O uso do ripgrep na linha de comando não é muito diferente de outras ferramentas semelhantes.
  • Ele oferece suporte automático a saída no terminal, cores, exibição de números de linha etc.
  • É possível pesquisar usando várias opções e padrões de busca.

Estrutura do ripgrep

Contexto

  • Explica as diferenças e semelhanças entre grep e as ferramentas descendentes de ack.
  • O ripgrep combina a capacidade do grep de pesquisar arquivos grandes com os padrões “inteligentes” de busca do ack.

Preparação para a busca de arquivos

  • Usar um iterador de diretórios rápido e filtragem de caminhos de arquivos é importante.
  • Aplicar rapidamente as regras de arquivos .gitignore afeta o desempenho.

Busca

  • Um mecanismo rápido de expressões regulares e otimizações para literais são importantes.
  • Em vez de pesquisar linha por linha ou o arquivo inteiro, ele pesquisa grandes buffers de uma só vez.

Saída

  • Os resultados da busca são gravados em um buffer de memória e serializados para stdout na saída.

Metodologia

Visão geral

  • Foca no problema que o usuário está tentando resolver e busca benchmarks justos.
  • Faz benchmark de várias ferramentas e compara levando em conta as diferenças de comportamento padrão de cada uma.

Opinião do GN⁺

O ponto mais importante deste texto é que ele explica em detalhes quais vantagens o ripgrep tem em comparação com as ferramentas de busca existentes. Em especial, desempenho rápido, suporte a Unicode e suporte a vários formatos de arquivo e encodings podem ser motivos atraentes para os usuários. Este texto é interessante porque ajuda a entender como uma nova ferramenta difere das existentes e como essas diferenças podem impactar usuários reais.

1 comentários

 
GN⁺ 2023-12-01
Comentários do Hacker News
  • A combinação de ripgrep e fzf é muito rápida, e foi fornecido um exemplo de função em Powershell que aproveita isso. Essa função faz a busca com ripgrep, depois usa fzf para pesquisa difusa e mostra o contexto dos resultados com bat. Esse método é útil para encontrar rapidamente onde está um determinado conteúdo em projetos com vários repositórios.
  • Foi apresentado um modo de usar ripgrep com os pacotes project.el e dumb-jump do Emacs. O dumb-jump restringe automaticamente a busca ao tipo de arquivo atual dentro de um diretório de projeto específico, e também oferece suporte a outra ferramenta rápida chamada ag.
  • É interessante o fato de que o ripgrep fornece o recurso de busca do VS Code por meio de um wrapper em Node.js.
  • Usuários do ripgrep apontam como principais motivos, em comparação com o grep, a facilidade de uso e o ganho de velocidade, destacando especialmente como útil o recurso que aplica automaticamente as regras do gitignore.
  • É mencionado que substitutos do grep paralelizados, como ripgrep e ag, são muito mais rápidos que o grep, então a diferença de velocidade por si só não é um critério tão decisivo, sendo necessário avaliá-los de outras maneiras.
  • É apontado que o anúncio inicial do ripgrep foi em 2016, e é sugerido indicar o ano no título.
  • O qgrep oferece alta velocidade usando índices, mas é mencionado que o ripgrep pode ficar lento quando são necessárias correspondências multilinha em UTF8.
  • Foi compartilhado um fluxo de trabalho conveniente para editar o projeto inteiro por meio do pacote Consult, usando ripgrep dentro do Emacs.
  • É informado que a versão ripgrep-all também funciona com outros tipos de documento, como arquivos PDF e doc.
  • É levantada a dúvida sobre por que o grep não é substituído ou melhorado, e avalia-se que esse tema já está um pouco datado.