Pular para o conteúdo
fernando.moretes.com
BlogEstudosCursosE-booksOpen SourcePodcasts
Loading…
Fernando Azevedo

Arquiteto de TI Especialista

Arquitetura, AWS, IA em produção, sistemas financeiros e FinOps, escritos a partir do que foi operado, com os números.

  • LinkedIn
  • GitHub
  • E-mail

Conteúdo

  • Blog
  • Estudos de arquitetura
  • Cursos
  • E-books
  • Open Source
  • Podcasts
  • Assuntos
  • Trilhas

Ferramentas

  • Well-Architected self-check
  • Arquitetura deste site
  • Números públicos
  • Histórico de estudo

Sobre

  • Comunidade
  • IA Builder
  • Perfil
  • Currículo (CV)
  • Trabalhe comigo
  • Media kit
  • RSS do blog
  • RSS dos estudos
  • Artigos narrados (podcast)
  • llms.txt
  • Termos, privacidade e uso de IA

(c) 2026 Fernando Francisco Azevedo

Open Source/google-terminal-search
Shell

google-terminal-search

Busca no Google a partir do terminal: um script Bash de 17 linhas, sem dependências

Atualizado em 29 de set. de 2026000 visualizações00 reproduções
Compartilhar:LinkedInWhatsAppXBaixar em Markdown
#automation#bash#cli#developer-tools#google-search#moretes#portfolio#productivity#terminal
Ver no GitHub Site
git clone https://github.com/fernando-moretes/tool-google-terminal-search.git
Ouvir guia

cerca de 3 min · áudio gerado ao tocar

O tool-google-terminal-search é um script Bash de 17 linhas que pega o que você digita no terminal, monta a URL de busca do Google e abre no navegador padrão, com open no macOS e xdg-open no Linux.

Por que isso existe

A pergunta aqui não é "preciso de uma ferramenta para pesquisar no Google?". A pergunta é "quantas vezes por dia eu saio do terminal só para colar uma mensagem de erro numa aba nova?". Num dia de plantão a resposta passa fácil de vinte: um AccessDeniedException que não reconheço, uma flag do rsync que esqueci, o nome exato de uma chave de condição do IAM.

Cada uma dessas trocas tem o mesmo roteiro: tirar a mão do teclado, achar o navegador, abrir uma aba, colar, apertar Enter. Ninguém mede o custo de uma troca isolada. O que pesa é a soma, e principalmente a interrupção no meio de um raciocínio.

Este script corta o roteiro para um comando. Você digita google AccessDeniedException ssm, o navegador abre já na página de resultados e o terminal fica livre para o próximo comando.

Ele não tenta ser um cliente do Google no terminal. Não faz scraping, não renderiza resultado em texto, não chama API nenhuma. Foi uma escolha deliberada: tudo isso exigiria chave de API, cota ou parsing de HTML que quebra quando o Google muda o layout, e esse custo de manutenção não se paga numa ferramenta de atalho.

O que acontece quando você roda google <termos>

O fluxo inteiro mora num único arquivo, google_search.sh. Não há estado, configuração nem chamada de rede feita pelo próprio script: a requisição HTTP sai do navegador.

🔧 Bash: google_search.sh
  • Junta os argumentos · search_query="$*"
  • Troca espaço por + · ${search_query// /+}
  • Detecta o SO · $OSTYPE
💻 Sistema operacional
  • macOS · open URL
  • Linux · xdg-open URL
  • Outro SO · Platform not supported (exit 1)
🌐 Externo
  • Google Search · www.google.com/search?q=

Instalação e uso

  1. 1

    Clone o repositório

    git clone https://github.com/fernando-moretes/tool-google-terminal-search.git e depois cd tool-google-terminal-search. O readme.md antigo ainda aponta para fernandotech/google-terminal-search, de antes da migração para a org; use a URL nova.

  2. 2

    Torne o script executável

    chmod +x google_search.sh. Sem isso o shell devolve Permission denied e você acaba rodando com bash google_search.sh, que funciona mas não vira atalho.

  3. 3

    Coloque no PATH com o nome google

    mv google_search.sh /usr/local/bin/google (pode pedir sudo). Se preferir não mexer em diretório do sistema, use ~/.local/bin/google e confira que ~/.local/bin está no seu PATH.

  4. 4

    Pesquise

    google "lambda timeout 900 segundos" ou sem aspas, google lambda timeout 900 segundos. O script usa $*, então os dois jeitos viram a mesma query.

Quickstart completo, do clone à primeira busca
bash
git clone https://github.com/fernando-moretes/tool-google-terminal-search.git
cd tool-google-terminal-search
chmod +x google_search.sh
sudo mv google_search.sh /usr/local/bin/google

# aspas são opcionais: "$*" junta todos os argumentos
google aws lambda reserved concurrency
google "terraform import aws_s3_bucket"

Como funciona por dentro

São três passos, todos em Bash puro.

Montagem da query: search_query="$*" junta todos os argumentos posicionais numa string só, separados por espaço. É por isso que aspas não fazem diferença.

Formatação para URL: formatted_query="${search_query// /+}" usa expansão de parâmetro do Bash para trocar cada espaço por +. Nenhum processo externo é chamado: nada de sed, python ou jq.

Despacho por sistema operacional: o script lê $OSTYPE. Se começa com darwin, chama open; se começa com linux-gnu, chama xdg-open. Qualquer outro valor imprime Platform not supported e sai com código 1.

O resultado é que o script não tem dependência além do Bash e do abridor de URL que o sistema já traz. No macOS, open vem de fábrica. No Linux, xdg-open vem do pacote xdg-utils, presente na maioria dos desktops e ausente em boa parte das imagens de servidor e contêiner.

Essa ausência de dependência é o que mantém o custo de manutenção perto de zero: não há versão de biblioteca para atualizar nem API que possa mudar contrato.

O encoding só cobre espaço

O script troca espaço por + e passa o resto cru para a URL. Isso falha em silêncio com caracteres reservados: google C# async vira q=C porque o # inicia o fragmento da URL; google C++ templates chega ao Google como "C templates", porque + é lido como espaço; e um & corta a query e começa um parâmetro novo. Nenhum desses casos dá erro: o navegador abre uma busca diferente da que você digitou.

O que o script faz e o que não faz

Faz: abre a página de resultados do Google no navegador padrão, a partir de qualquer diretório, com um comando.
Faz: roda no macOS (darwin) e em Linux com glibc (linux-gnu) que tenha xdg-open.
Não faz: mostrar resultado no terminal. Nada é baixado nem parseado pelo script.
Não faz: escapar caracteres reservados como #, &, + e ? (veja o aviso acima).
Não roda: em Alpine (linux-musl), FreeBSD ou Windows nativo. Esses caem no exit 1.

Perguntas frequentes

Funciona no WSL?

O WSL reporta linux-gnu em $OSTYPE, então o script chama xdg-open. Se ele vai abrir o navegador do Windows depende de como o xdg-open está configurado na sua distro. Teste antes de contar com isso.

Funciona por SSH num servidor?

Não de forma útil. O xdg-open tentaria abrir um navegador na máquina remota, que normalmente não tem nem sessão gráfica nem xdg-utils instalado.

Dá para usar outro buscador?

O README sugere customizar o script. Na prática é trocar a URL https://www.google.com/search?q= nas duas linhas que chamam open e xdg-open. Não existe flag nem variável de ambiente para isso.

Como contribuir?

O repositório segue as convenções do platform: branch <tipo>/<escopo> (feat/, fix/, chore/, docs/), commit e título de PR em Conventional Commits, e a versão sai dos commits. A pipeline (pr-lint, CI, segurança e release) vem dos workflows reutilizáveis de lá, então mudar a régua é mudar um arquivo no platform, não aqui. Um bom primeiro PR é o encoding completo da query.

Referências

GitHub: fernando-moretes/tool-google-terminal-searchfernando.moretes.comGNU Bash Manual: Shell Parameter ExpansionConventional Commits

Para quem é

Use quando você vive no terminal, num Mac ou num desktop Linux, e suas buscas são mensagem de erro, nome de flag ou nome de serviço. Esse é exatamente o caso em que o script brilha, e são 17 linhas que você lê inteiras em um minuto antes de colocar no PATH. Não use como está se você pesquisa linguagem com símbolo no nome (C#, C++, F#) ou se trabalha em Alpine, FreeBSD ou por SSH: lá ele falha ou, pior, abre a busca errada sem avisar. Nesses casos, faça o fork e troque a substituição de espaço por um encoding de URL completo antes de adotar.

Curte open source e arquitetura? Receba mais.

Deep dives de arquitetura, AWS, IA e mercado: direto no seu email. Grátis.

Sem spam · cancele quando quiser

Guia gerado com IA a partir do repositório e do README. · Fonte

Continue lendo

Shellsetup-macos-developerSetup de Mac para desenvolvimento em Shell: o mesmo ambiente, em toda máquina novaLer Rubyhomebrew-google-terminal-searchTap Homebrew do google-terminal-search: um brew install no lugar de copiar script à mãoLer TypeScriptdailyfocusUm foco por dia, tarefas, timer e reflexão: produtividade sem painel de controleLer