>_ josetilabs.com
← blog

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.

Dois painéis de terminal: à esquerda ls -la lista arquivos com permissões em letras e tamanhos em bytes; à direita eza -la mostra o mesmo diretório com permissões simbólicas, tamanho e data
A mesma pasta, dois formatos. O eza tira o total inicial e alinha tamanho e data.
Dois painéis de terminal: à esquerda cat imprime o arquivo sem número de linha; à direita bat -n imprime o mesmo arquivo com número de linha
cat imprime cru. bat -n coloca o número que você vai citar no commit ou no ticket.

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.

bash
#!/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

bash
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

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.

Leia também

// Por e-mail

Os textos publicados aqui também vão por e-mail. O envio ainda não começou: quem deixar o endereço agora entra na primeira lista.

Guardo só o seu e-mail, a data e o registro desta autorização. Sem cookies, sem rastreador e nada compartilhado com terceiros. Detalhes na política de privacidade.