bat: Um Clone do cat com Realce de Sintaxe
O Que Voce Vai Aprender
- Como usar
batem vez decatpara exibir arquivos com cor e numeros de linha - Como corrigir o problema
batcatno Ubuntu/Debian (o comando nao se chamabat) - Como remover decoracoes para igualar a saida do
catem pipes e scripts - Extras praticos como colorir paginas
manque compensam no dia a dia
Publico-Alvo: Iniciantes em Linux, qualquer pessoa insatisfeita com a saida simples do cat
Introducao: O Problema de Lina "cat E Dificil de Ler"
cat config.json, mas tudo e da mesma cor e meus olhos simplesmente escorregam. Reabrir em um editor tambem e trabalhoso.cat apenas "despeja o conteudo como esta" -- sem cor, sem numeros de linha. Existe um cat melhorado chamado bat que torna tudo legivel de uma so vez.cat. Realce de sintaxe, numeros de linha, ate marcadores de diff Git -- tudo embutido desde o inicio. Vamos aprender juntos hoje.A Resposta Curta
bat= um substituto docatcom cor, numeros de linha, diffs Git e paginacao automatica prontos para uso- No Ubuntu/Debian,
sudo apt install batinstala, mas o comando ebatcat(criar alias parabate padrao) - Para pipes e scripts,
bat -p(sem decoracoes) /bat -pp(sem pager tambem) retornam ao comportamento estilocat
1. O Que E o bat?
Conclusao:
bate um substituto docat. Exibe conteudo de arquivos como ocat, mas adiciona realce de sintaxe, numeros de linha, marcadores de mudanca Git e paginacao automatica.
bat e cat?cat transmite texto simples em preto e branco, bat colore a sintaxe, adiciona numeros de linha e ate marca linhas alteradas quando voce esta em um repositorio Git.cat?bat cobre quase tudo. Porem, nao e um substituto perfeito, entao voce precisa de um pouco de cuidado em pipes e scripts. Vamos cobrir isso depois.bat e uma ferramenta em Rust desenvolvida por sharkdp/bat. As principais diferencas do cat:
| Aspecto | cat | bat |
|---|---|---|
| Realce de sintaxe | Nenhum | Sim (detecta a linguagem automaticamente) |
| Numeros de linha | Com -n |
Ativado por padrao |
| Exibicao de diff Git | Nenhuma | Sim (marca linhas alteradas) |
| Arquivos longos | Rola tudo | Abre automaticamente less (pager) |
| Caracteres nao imprimiveis | -A simboliza |
-A simboliza |
| Comportamento em pipe | Sempre texto simples | Desativa decoracoes automaticamente (depois) |
2. Instalacao e o Problema batcat
Conclusao: No Ubuntu/Debian,
apt install batfunciona, mas o comando se chamabatcatpara evitar conflito de nomes. Criar um symlink parabate a correcao padrao.
# Ubuntu / familia Debian $ sudo apt install bat # Fedora / familia RHEL $ sudo dnf install bat # Arch Linux $ sudo pacman -S bat # macOS (Homebrew) $ brew install bat
A Armadilha do Ubuntu/Debian: O Comando E batcat
No Debian, para evitar conflito de nome de binario com outro pacote, o comando se chama batcat em vez de bat. Digitar bat resulta em command not found.
bat nao funciona -- que triste...fdfind com fd. Adicione um symlink e voce pode chama-lo como bat.Para usa-lo com o nome bat, crie um symlink em ~/.local/bin.
mkdir -p ~/.local/bin ln -s "$(which batcat)" ~/.local/bin/bat
Se ~/.local/bin nao esta no seu PATH, adicione no ~/.bashrc e recarregue.
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc source ~/.bashrc
Confirme a instalacao e versao:
$ bat --version
bat 0.24.0
Se Voce Pular o Symlink no Ubuntu
Se o symlink parece trabalhoso, voce pode ler cada bat nos exemplos deste artigo como batcat e funciona do mesmo jeito. Mas o symlink permite copiar e colar bat de outros artigos e documentacoes diretamente, o que e mais conveniente.
3. O Basico de Usar o bat
Conclusao:
bat NOMEDOARQUIVOmostra o conteudo com cor e numeros de linha. Passe multiplos arquivos e ele os separa com cabecalhos rotulados.
cat -- basta passar o nome do arquivo que voce quer exibir.$ bat config.json
───────┬────────────────────────────────────────
│ File: config.json
───────┼────────────────────────────────────────
1 │ {
2 │ "name": "penguin",
3 │ "version": "1.0.0",
4 │ "debug": false
5 │ }
───────┴────────────────────────────────────────
Como Ler a Saida
- Os numeros a esquerda: numeros de linha (equivalente ao
cat -n, ativado por padrao) - O
File: config.jsonno topo: o cabecalho com o nome do arquivo - As cores: a linguagem e detectada automaticamente pela extensao e realcada sintaticamente (JSON acima)
Passe multiplos arquivos e cada um recebe seu proprio cabecalho como separador.
$ bat a.txt b.txt
cat a.txt b.txt os conteudos se misturavam e eu nao conseguia saber onde b.txt comecava.bat insere um cabecalho por arquivo, entao verificar multiplos arquivos fica muito mais facil.Arquivos Longos Viram Pager Automaticamente
Abra um arquivo grande demais para a tela com bat e ele automaticamente abre o less (um pager). Role com as teclas de seta ou Space, e saia com q. Voce nao vai perder sua posicao com o scroll desenfreado estilo cat.
4. Como Tornar Simples Como o cat?
Conclusao: Para remover decoracoes (numeros de linha, cabecalho, linhas de grade), use
-p(--plain). Para tambem parar o pager e se comportar exatamente comocat, use-pp.
# Remover numeros de linha, cabecalho e grade (manter cor) $ bat -p config.json # Remover decoracoes E o pager (quase identico ao cat) $ bat -pp config.json
Dois Niveis de Remocao de Decoracoes
| Opcao | O que e removido | O que permanece |
|---|---|---|
-p |
Numeros de linha, cabecalho, grade | Cor, paginacao automatica |
-pp |
Tudo acima + paginacao automatica | Cor (em um terminal) |
-p duas vezes e -pp. Facil de lembrar.-pp significa "sem decoracoes, sem pager", entao e um substituto facil para o cat. E a escolha ideal quando voce so quer dar uma olhada rapida no conteudo.Para inspecionar caracteres nao imprimiveis (tabulacoes, fins de linha, espacos finais), use -A (--show-all).
$ bat -A messy.txt
-A visualiza tabulacoes como ├──▶ e novas linhas como um simbolo tipo ␊. E otimo para resolver problemas de "espacos em branco invisiveis quebram meu script". Mesmo proposito que cat -A, mas a cor torna mais claro.
5. Como Personalizar a Exibicao?
Conclusao: Escolha quais partes mostrar com
--style(numbers / header / grid / changes, etc.), e mude as cores com--theme. Liste os temas disponiveis com--list-themes.
--style voce especifica os componentes a mostrar, separados por virgula.# Apenas numeros de linha (sem grade, sem cabecalho) $ bat --style=numbers config.json # Apenas numeros de linha e marcadores de mudanca Git $ bat --style=numbers,changes config.json # Remover todas as decoracoes (mesmo que -p) $ bat --style=plain config.json
Principais Componentes do --style
| Valor | Significado |
|---|---|
numbers |
Numeros de linha |
header |
Cabecalho com nome do arquivo |
grid |
Linhas de grade separadoras |
changes |
Marcadores de mudanca Git |
full |
Tudo (padrao) |
plain |
Nada (equivalente a -p) |
Mude o tema de cores com --theme. Liste os temas disponiveis com --list-themes.
# Ver a lista de temas $ bat --list-themes # Exibir com um tema escolhido $ bat --theme=ansi config.json
Tornar Configuracoes Permanentes
Se digitar opcoes toda vez e cansativo, escreva padroes em um arquivo de configuracao. Gere um template com bat --generate-config-file, defina seu --theme e --style padrao la, e a partir de entao um bat simples aplica essas configuracoes.
6. Como Visualizar ou Realcar Linhas Especificas?
Conclusao: Especifique um intervalo de linhas com
-r(--line-range) comoinicio:fim. Destaque uma linha especifica com-H(--highlight-line). Force uma linguagem com-l(--language).
-r. Sem necessidade de tail ou sed -- bat sozinho recorta.# Mostrar linhas 100 ate 120 $ bat -r 100:120 app.log # Da linha 50 ate o final $ bat -r 50: app.log # Do inicio ate a linha 30 $ bat -r :30 app.log
Para destacar uma linha especifica com cor, use -H.
# Exibir o arquivo inteiro enquanto realca a linha 42 $ bat -H 42 app.log
Quando a linguagem nao e detectada automaticamente (para arquivos sem extensao, por exemplo), especifique com -l.
# Realcar um arquivo sem extensao como JSON $ bat -l json mydata
bat adivinha a linguagem pela extensao e conteudo, mas pode errar. Quando erra, -l diz "isto e JSON." Veja as linguagens suportadas com bat --list-languages.7. O Que Observar em Pipes e Scripts?
Conclusao: Quando a saida vai para um pipe ou arquivo,
batautomaticamente remove decoracoes e emite texto simples. Mesmo assim, nao e um substituto perfeito docat, entao prefiracatem scripts.
bat config.json | grep debug e funcionou normalmente. Os codigos de cor nao se misturaram.bat verifica se a saida e um terminal (a tela), e quando voce faz pipe ou redireciona para um arquivo, ele desativa automaticamente decoracoes e cor. Entao passa-lo para grep ou wc nao quebra nada.# Pipe resulta em texto simples automaticamente $ bat config.json | grep debug # Redirecionar para um arquivo nao insere codigos de cor $ bat config.json > copy.json
Use cat em Scripts
bat e pratico, mas nao esta instalado em todo lugar. Se um shell script assume bat, ele quebra em uma maquina que nao o tem. Em scripts que voce distribui ou compartilha, use cat simples para processamento que nao precisa de decoracao. Trate bat estritamente como uma ferramenta para "quando um humano esta olhando."
alias cat=bat para substituir cat completamente?cat, entao sobrescreve-lo com um alias pode causar surpresas. Se for o caso, adicione com um nome separado, como alias bat='batcat'.8. Quais Sao os Extras Praticos?
Conclusao:
battambem pode colorir paginasmane alimentar previews em ferramentas comofzf. Onde voce quiser "mostrar conteudo com cor", pode inseri-lo.
bat sozinho. Silenciosamente eficazes uma vez configurados.Para colorir paginas man com bat, defina a variavel de ambiente MANPAGER. Adicione esta linha ao ~/.bashrc.
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
Como Ler
col -bx: limpa caracteres de controle na saida doman(como negrito baseado em overstrike)bat -l man -p: coloriza usando as regras da linguagemmane exibe de forma simples (-p)- Apos configurar, abrir
man lse similares colore cabecalhos e opcoes para leitura mais facil
Usado como preview no fzf (um buscador fuzzy), ele mostra conteudo de arquivos candidatos com cor.
# Escolher um arquivo enquanto visualiza seu conteudo com cor
$ fzf --preview 'bat --color=always {}'--color=always?fzf pode ser interpretado como "nao e um terminal", e sozinho, bat removeria a cor. Entao voce diz explicitamente "sempre colorize." Por outro lado, em pipes normais voce nao adiciona -- essa e a troca a aprender.9. Mini Exercicios: Experimente na Sua Maquina
Conclusao: Tres exercicios -- exibir, remover decoracoes e intervalo de linhas -- para fixar o basico do
bat.
Exercicio 1: Abra um arquivo de configuracao (ex: ~/.bashrc) com bat e confirme que mostra numeros de linha e cor.
Exercicio 2: Abra o mesmo arquivo com bat -pp e confirme que as decoracoes e o pager sumiram, igualando ao cat.
Exercicio 3: Execute bat -r 1:10 ~/.bashrc e confirme que apenas as primeiras 10 linhas sao mostradas.
Dica para Exercicio 1
bat ~/.bashrc
Sucesso se voce ver numeros de linha a esquerda, um cabecalho com nome do arquivo no topo e realce de sintaxe de shell script.
Dica para Exercicio 2
bat -pp ~/.bashrc
Os numeros de linha, cabecalho e grade desaparecem, o pager nao abre e imprime tudo de uma vez -- quase identico a cat ~/.bashrc (apenas a cor permanece no terminal).
Dica para Exercicio 3
bat -r 1:10 ~/.bashrc
O formato e inicio:fim. Tambem tente bat -r 5: file (da linha 5) e bat -r :5 file (primeiras 5 linhas) para se familiarizar com intervalos.