O que é o ble.sh?
O ble.sh, o Bash Line Editor, é um editor de linha escrito em Bash puro que substitui o GNU Readline nas sessões interativas do Bash. Você mantém o Bash, seu ~/.bashrc, seus aliases e scripts, e ganha o que normalmente exigiria trocar de shell: realce de sintaxe enquanto digita, sugestões automáticas do histórico no estilo do fish, um modo vim completo ao lado dos atalhos do emacs, autocompletar com menus e descrições, abreviações e integração com bash-completion e fzf. É escrito por Koichi Murase e distribuído sob a licença BSD-3-Clause. Não há binário para executar: o pacote instala o script em /usr/share/blesh/ble.sh, e duas linhas no seu ~/.bashrc o ativam.
apt upgrade.
⚡ Principais recursos do ble.sh
🎨 Realce de sintaxe
Comandos, palavras-chave, strings, variáveis, redirecionamentos e nomes de arquivo são coloridos enquanto você digita, e um comando desconhecido ou um erro de sintaxe aparece antes de você apertar Enter.
💡 Sugestões automáticas
Sugestões no estilo do fish, vindas do histórico e do autocompletar, aparecem em cinza depois do cursor. Aceite a sugestão inteira com a seta para a direita ou C-f, ou palavra por palavra com M-f.
⌨️ Modos vim e emacs
Atalhos do emacs por padrão e um modo vi/vim completo com set -o vi: modos normal, inserção e visual, objetos de texto, registradores e uma linha de status opcional no estilo do vim-airline.
📋 Autocompletar com menu
Tab abre um menu de candidatos que você percorre com as setas, com descrições quando existem e correspondência ambígua (fuzzy).
✂️ Abreviações
ble-sabbrev define abreviações que se expandem enquanto você digita, como as abreviações do fish ou os aliases globais do zsh, então L vira | less.
🐚 Bash puro, sem binário
Nada para compilar e nada específico de arquitetura: o ble.sh é um script Bash que roda onde quer que rode o Bash 3.0 ou mais novo, e fica fora de shells não interativos e de scripts.
apt upgrade mantém você na versão mais recente.
📦 Instalação a partir do deb.griffo.io
Passo 1: Adicionar o repositório
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt updatesudo apt install extrepo
sudo extrepo enable griffo
sudo apt update🆓 Existe um espelho grátis para sempre. deb-free.griffo.io distribui pacotes grátis para sempre — sem conta, sem assinatura, no máximo 2 meses atrás do upstream, correções de segurança imediatas. Hoje ele traz cliamp, Ghostty, lazydocker, Oh My Posh, Uncloud e Zed; ble.sh não está entre elas, então o repositório acima é a única forma de instalar hoje — peça e ela pode ser adicionada.
🧩 Sobre a opção extrepo. extrepo é a ferramenta do próprio Debian para repositórios externos: ela escreve o arquivo de sources e instala a chave de assinatura para você, conferindo a chave contra metadados assinados antes de usá-la. Este repositório está registrado nela como griffo, e o espelho gratuito para sempre como griffo-free, então no Debian (bookworm, trixie, forky e sid) os comandos acima são toda a configuração.
O extrepo configura apenas o arquivo de sources e a chave: as credenciais de uma assinatura continuam indo em /etc/apt/auth.conf.d/deb.griffo.io.conf. O Ubuntu não é coberto, porque o extrepo publica metadados só para as suítes do Debian: lá, use os comandos com sudo ou como root.
Passo 2: Instalar o ble.sh
# Instalar o ble.sh mais recente
sudo apt install ble.sh
# Opcional: temas do vim-airline para a linha de status do modo vi
sudo apt install ble.sh-airline-themes# Instalar o ble.sh mais recente
apt install ble.sh
# Opcional: temas do vim-airline para a linha de status do modo vi
apt install ble.sh-airline-themesPasso 3: Ativar o ble.sh no seu ~/.bashrc
# O ble.sh não tem um comando próprio: o Bash o carrega a partir do ~/.bashrc.
# Coloque esta linha perto do INÍCIO do ~/.bashrc:
[[ $- == *i* ]] && source /usr/share/blesh/ble.sh --noattach
# ...o resto do seu ~/.bashrc continua como está...
# E esta linha bem no FINAL do ~/.bashrc:
[[ ${BLE_VERSION-} ]] && ble-attach
# Abra um terminal novo e depois:
# Verificar a instalação
echo $BLE_VERSION🎯 Exemplos básicos de uso
Uso do dia a dia:
# Verificar se o ble.sh está ativo neste shell
echo $BLE_VERSION
# Recarregar o ble.sh depois de mudar as configurações
ble-reload
# As atualizações vêm pelo apt; o ble-update aponta para ele
sudo apt update && sudo apt upgrade# Verificar se o ble.sh está ativo neste shell
echo $BLE_VERSION
# Recarregar o ble.sh depois de mudar as configurações
ble-reload
# As atualizações vêm pelo apt; o ble-update aponta para ele
apt update && apt upgradeConfigurações no ~/.blerc:
# O ble.sh lê suas configurações do ~/.blerc (ou ~/.config/blesh/init.sh)
# Atalhos do vim em vez do emacs
set -o vi
# Esperar 300 ms antes de mostrar uma sugestão
bleopt complete_auto_delay=300
# Desativar totalmente as sugestões automáticas
bleopt complete_auto_complete=
# Mudar a cor do texto sugerido
ble-face auto_complete='fg=242'Abreviações, atalhos de teclado e integrações:
# Expandir "L" para "| less" enquanto você digita
ble-sabbrev L='| less'
# Fazer o Ctrl+C descartar a linha atual
ble-bind -f 'C-c' discard-line
# Autocompletar e atalhos do fzf, adaptados ao ble.sh
ble-import -d integration/fzf-completion
ble-import -d integration/fzf-key-bindings
# Linha de status no estilo do vim-airline (requer ble.sh-airline-themes)
ble-import vim-airline
bleopt vim_airline_theme=dark🔧 Integrações com outras ferramentas
O ble.sh fica por baixo da sua configuração do Bash em vez de substituí-la:
- bash-completion: os autocompletes do pacote
bash-completionsão detectados automaticamente e exibidos no menu - fzf: o
ble-importcarrega versões do autocompletar e dos atalhos do fzf adaptadas ao ble.sh - Atuin: a integração do Atuin com o Bash suporta o ble.sh, que fornece hooks preexec confiáveis para registrar o histórico
- Starship / Oh My Posh: os prompts gerados por eles continuam funcionando sem mudanças
- Arquivo de configuração: o
~/.blercguarda suas configurações debleopt,ble-faceeble-bind, separadas do~/.bashrc
🚀 Por que escolher o deb.griffo.io?
- Debian oficial: só no testing e no unstable; as versões estáveis (bookworm e trixie) não o incluem
- git clone + make: atualizado, mas compilado e instalado à mão em
~/.local, e você mesmo precisa mantê-lo em dia comble-update - deb.griffo.io: versão mais recente com atualizações automáticas
- ✅ Snapshots recentes: os snapshots nightly do upstream, com correções para novas versões do Bash e terminais
- ✅ Sem configuração manual: sem git clone, sem
make, sem uma cópia do ble.sh no seu diretório pessoal para manter - ✅ Atualizações automáticas: pacotes atualizados poucas horas após cada release upstream
- ✅ Pacote completo: a árvore completa do ble.sh em
/usr/share/blesh, sua documentação e o pacote opcionalble.sh-airline-themes - ✅ Todas as arquiteturas: publicado como
Architecture: all, então amd64, arm64, armhf, riscv64 e as demais instalam o mesmo pacote - ✅ Multi-distribuição: funciona em Bookworm, Trixie, Forky e Sid
- ✅ Manutenção simples: comandos apt de sempre para atualizar
📦 Repositório de build do pacote
Os pacotes Debian são construídos e mantidos automaticamente neste repositório do GitHub:
- 🖍️ ble.sh-debian - Builds das versões mais recentes
🔗 Pacotes relacionados
Também disponíveis no deb.griffo.io:
- fzf - Buscador fuzzy com o qual o ble.sh se integra
- Atuin - Histórico do shell em um banco de dados, com suporte ao ble.sh
- Starship - Prompt multishell que funciona sob o ble.sh
- zoxide - Um cd mais esperto que aprende seus diretórios
~/.bashrc a reescrevê-lo para outro shell.