google-terminal-search
Busca no Google a partir do terminal: um script Bash de 17 linhas, sem dependências
git clone https://github.com/fernando-moretes/tool-google-terminal-search.gitOuvir guia
gerado ao ouvirGerado apenas no primeiro play
Com tecnologia Amazon Polly + OmniVoice
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.
- Junta os argumentos · search_query="$*"
- Troca espaço por + · ${search_query// /+}
- Detecta o SO · $OSTYPE
- macOS · open URL
- Linux · xdg-open URL
- Outro SO · Platform not supported (exit 1)
- Google Search · www.google.com/search?q=
Instalação e uso
- 1
Clone o repositório
git clone https://github.com/fernando-moretes/tool-google-terminal-search.gite depoiscd tool-google-terminal-search. Oreadme.mdantigo ainda aponta parafernandotech/google-terminal-search, de antes da migração para a org; use a URL nova. - 2
Torne o script executável
chmod +x google_search.sh. Sem isso o shell devolvePermission deniede você acaba rodando combash google_search.sh, que funciona mas não vira atalho. - 3
Coloque no PATH com o nome `google`
mv google_search.sh /usr/local/bin/google(pode pedirsudo). Se preferir não mexer em diretório do sistema, use~/.local/bin/googlee confira que~/.local/binestá no seuPATH. - 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.
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
darwin) e em Linux com glibc (linux-gnu) que tenha xdg-open.#, &, + e ? (veja o aviso acima).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
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.
Deep dives de arquitetura, AWS, IA e mercado: direto no seu email. Grátis.
Sem spam · cancele quando quiser