31 out 2026 · linux, ferramentas, terminal · 4 min
bat e eza: ls e cat mais legíveis no terminal
Dois comandos que todo mundo usa todo dia, ls e cat, têm versões que mostram mais com menos ruído. bat é um cat que pinta a sintaxe e numera as linhas. eza é um ls que mostra permissões simbólicas, tamanho legível e status do git na mesma linha.
Medi os dois num diretório de sete arquivos com um repositório git ao lado. ls -la imprimiu 10 linhas. eza -la imprimiu 9, com tamanho em bytes e data em cada uma. bat -n numerou as quatro linhas do script. O ganho não é velocidade, é leitura.
O que o bat resolve
O problema do cat em código não é a cor, é a referência. Você lê um arquivo de 40 linhas, acha o erro na linha 23, e na hora de escrever o commit precisa contar de novo. bat -n resolve isso de graça, sem abrir editor.
Além do número, bat mostra mudança do git quando o arquivo está num repositório. No diretório de teste, dados.txt modificado aparece com marca na linha nova. E pinta a sintaxe para dezenas de linguagens, sem configuração.
O que o eza resolve
ls -la imprime permissões em letras, dono, grupo, tamanho em bytes e data, mas tudo colado. eza alinha as colunas e troca o tamanho por formato legível. Com --git, adiciona uma coluna com o status do arquivo no repositório: -- para não modificado, -M para modificado.
No teste, dados.txt apareceu com -M e os outros com --. É a informação que você ia buscar com git status separado.
Quando não vale a pena
Em servidor remoto, onde você só quer ver se o arquivo existe, ls e cat são suficientes e estão em toda imagem. bat e eza são binários extras, e em contêiner minimalista não existem. O ripgrep segue a mesma lógica: ferramenta melhor, mas dependência extra.
Se o terminal é lento ou a saída é grande, bat pagina por padrão. Use --paging=never em scripts.
O artefato: aliases comentados
O arquivo abaixo é feito para ser copiado para ~/.bashrc ou ~/.zshrc. Cada alias tem um comentário com o efeito. Se bat ou eza não estiverem instalados, o script avisa e não quebra.
#!/usr/bin/env bash
# aliases para bat e eza
# cole no final do ~/.bashrc ou ~/.zshrc e rode: source ~/.bashrc
if command -v bat >/dev/null 2>&1; then
# cat com sintaxe e sem paginação (bom em scripts)
alias cat='bat --paging=never --style=plain'
# cat com número de linha, para citar no commit
alias catn='bat --paging=never -n'
# diff do arquivo contra o HEAD do git
alias catd='bat --paging=never --diff'
else
echo 'bat nao encontrado: aliases de cat desativados'
fi
if command -v eza >/dev/null 2>&1; then
# listagem básica com ícones
alias ls='eza --icons'
# listagem longa com git status
alias ll='eza -la --git --icons'
# árvore de dois níveis
alias lt='eza --tree --level=2 --icons'
else
echo 'eza nao encontrado: aliases de ls desativados'
fi
# demonstração, só roda se as duas ferramentas existirem
tmp=$(mktemp -d)
printf '#!/usr/bin/env bash\necho oi\n' > "$tmp/demo.sh"
if command -v bat >/dev/null 2>&1; then
echo '--- bat -n ---'
bat -n --color=never --paging=never "$tmp/demo.sh"
fi
if command -v eza >/dev/null 2>&1; then
echo '--- eza -la --git ---'
eza -la --git --color=never "$tmp"
fi
rm -rf "$tmp"
echo 'aliases carregados'
Como verificar
curl -sL https://github.com/sharkdp/bat/releases/latest -o /dev/null && echo ok
bat --version
eza --version
bash aliases-bat-eza.sh
A última linha imprime “aliases carregados”. Se bat ou eza faltar, o script avisa e segue.
Se der errado
bat: command not found: instale pelo gerenciador da distro ou baixe o binário estático do GitHub. No Debian,apt install batinstala com o nomebatcat; crie o linkln -s /usr/bin/batcat /usr/local/bin/bat.- eza não mostra cor: defina
TERM=xtermou use--color=always. Em pipe, eza desliga a cor por padrão. - eza -la –git imprime vazio: passe o diretório explicitamente,
eza -la --git .. Sem o ponto, em algumas versões ele não lista. - bat pagina e trava em script: adicione
--paging=never.
Links que ajudam
A mesma lógica de trocar ferramenta por uma versão mais legível aparece em ripgrep no lugar do grep, fzf para histórico, arquivos e branch e lazygit sem decorar comando. Para o terminal em si, terminal que parece limpo e funciona.
FAQ
bat é mais lento que cat? Em arquivo pequeno a diferença é imperceptível. Em arquivo grande, bat faz mais trabalho e leva mais tempo. Use cat em pipeline.
eza substitui ls em scripts? Não. Em script, use ls ou find, porque a saída do eza muda entre versões. Alias é para uso interativo.
Por que o bat não pinta no pipe? Porque detecta que a saída não é terminal. Use --color=always quando quiser forçar.
Os ícones do eza precisam de fonte especial? Sim, uma Nerd Font. Sem ela, aparecem quadrados. Use --icons=never ou remova --icons.
Vale instalar os dois? Se você passa o dia no terminal, sim. Se usa terminal uma vez por semana, não.
Fontes: sharkdp/bat (v0.26.1), eza-community/eza (v0.23.5). Medição própria em diretório isolado com sete arquivos, 31 out 2026.