DEV Community

Isaias Velasquez
Isaias Velasquez

Posted on

How to turbinar o terminal com jq, fzf e ripgrep

jq, fzf e ripgrep sao tres ferramentas de terminal que mudaram a forma como trabalho com arquivos e dados. Cada uma resolve um problema especifico e juntas formam um trio poderoso.

Primeiro, ripgrep (rg). Ele substitui o grep tradicional com uma busca muito mais rapida e com sintaxe mais amigavel:

rg "funcao main" src/
rg "TODO|FIXME" --type py
rg "import" -l src/  # so nomes de arquivo
rg "case class" --ignore-case
Enter fullscreen mode Exit fullscreen mode

Instale no Ubuntu ou WSL:

sudo apt install ripgrep
Enter fullscreen mode Exit fullscreen mode

No macOS:

brew install ripgrep
Enter fullscreen mode Exit fullscreen mode

O ripgrep respeita .gitignore por padrao. Nao precisa ficar excluindo node_modules ou target manualmente.

Agora fzf. E um fuzzy finder que deixa voce buscar e selecionar qualquer coisa no terminal de forma interativa:

history | fzf  # busca em comandos recentes
Ctrl+R no terminal ja usa fzf se configurado
Ctrl+T para buscar arquivos
Enter fullscreen mode Exit fullscreen mode

Instale:

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
Enter fullscreen mode Exit fullscreen mode

Depois de instalado, aperte Ctrl+R no terminal. Voce digita parte de um comando antigo e o fzf filtra e seleciona.

Combine fzf com ripgrep para buscar arquivos de forma inteligente:

rg --files | fzf
Enter fullscreen mode Exit fullscreen mode

Para abrir um arquivo qualquer do projeto:

vim $(rg --files | fzf)
Enter fullscreen mode Exit fullscreen mode

Ou com fd (outra ferramenta rapida para listar arquivos):

sudo apt install fd-find
vim $(fd . | fzf)
Enter fullscreen mode Exit fullscreen mode

Agora jq. E um processador de JSON que roda no terminal. Perfeito para trabalhar com APIs:

curl https://api.github.com/repos/user/repo | jq '.stargazers_count'
curl https://api.github.com/repos/user/repo | jq '.name, .description'
Enter fullscreen mode Exit fullscreen mode

Para extrair dados de uma lista:

curl https://api.github.com/users/octocat/repos | jq '.[] | .name'
Enter fullscreen mode Exit fullscreen mode

Filtrar por condicao:

curl https://api.github.com/users/octocat/repos | jq '.[] | select(.language == "Python") | .name'
Enter fullscreen mode Exit fullscreen mode

Formatar saida:

curl https://api.github.com/users/octocat/repos | jq '.[] | {nome: .name, estrelas: .stargazers_count}'
Enter fullscreen mode Exit fullscreen mode

Instale:

sudo apt install jq
# ou
brew install jq
Enter fullscreen mode Exit fullscreen mode

Juntando os tres. Aqui esta um exemplo pratico:

rg --files | fzf --preview 'bat --color=always {}'
Enter fullscreen mode Exit fullscreen mode

Isso lista todos os arquivos do projeto com ripgrep, filtra interativamente com fzf e mostra uma pre-visualizacao com bat (outro substituto do cat com syntax highlight).

Para buscar dentro de logs JSON:

cat arquivo.log | jq 'select(.level == "ERROR") | .message' | fzf
Enter fullscreen mode Exit fullscreen mode

Essas tres ferramentas sao instalacao obrigatoria em qualquer maquina que voce use para desenvolver.

That's all for now.
Thanks for reading!

Top comments (0)