Há comandos que toda a gente julga conhecer e o cat é o exemplo perfeito. A maioria dos administradores usa-o apenas para despejar um ficheiro no terminal e segue em frente. No entanto, quando um script falha “sem razão”, quando um Makefile se queixa de indentação ou quando um ficheiro de configuração é ignorado pela aplicação, é quase sempre o cat — com as opções certas — que revela o problema em segundos.
Neste artigo da série sobre comandos Linux, vamos além do uso básico: explicamos as opções que transformam o cat numa ferramenta de diagnóstico, mostramos onde ele encaixa no trabalho de cibersegurança e disponibilizamos um simulador interativo para praticar sem sair do navegador.
O que faz o cat
O nome vem de concatenate: o cat lê um ou mais ficheiros pela ordem indicada e escreve o conteúdo no standard output. Se não receber ficheiros, lê do teclado (standard input) até receber Ctrl+D. É esta simplicidade que o torna omnipresente: serve para ver ficheiros pequenos, juntar vários num só, alimentar pipes e criar ficheiros rapidamente com redirecionamentos.
cat [OPÇÕES] [FICHEIRO...]
cat relatorio.txt # mostra um ficheiro
cat parte1.txt parte2.txt > todo.txt # concatena dois ficheiros num terceiro
cat >> notas.txt # acrescenta o que escrever ao fim do ficheiro
O verdadeiro valor para quem administra sistemas está, porém, nas opções de visualização: o cat consegue tornar visíveis carateres que normalmente não se veem — tabulações, finais de linha e bytes não imprimíveis — e é aí que ele resolve problemas que parecem inexplicáveis.
As opções que interessam
Numerar e comprimir linhas
-n— numera todas as linhas do output, incluindo as vazias. Útil para dar coordenadas exatas quando se discute um ficheiro com um colega ou se documenta um incidente.-b— numera apenas as linhas com conteúdo; as vazias ficam sem número. Quando-be-nsão usados em conjunto, o-bprevalece.-s— comprime sequências de linhas em branco repetidas numa única linha vazia. Excelente para ler ficheiros de configuração muito espaçados.
$ cat -b config.ini
1 [base]
2 host = localhost
3 porta = 3306
Revelar o invisível
-E— marca o fim de cada linha com$. É a forma mais rápida de detetar espaços esquecidos no fim de uma linha: se houver espaço entre o texto e o$, está lá o problema.-T— mostra cada tabulação como^I. Indispensável em Makefiles (que exigem tabs) e em YAML (que os proíbe).-v— mostra carateres não imprimíveis em notação visível: o carriage return do Windows aparece como^M, o escape como^[e bytes com o oitavo bit ativo com o prefixoM-.-A— equivale a-vET: revela tudo de uma vez. Se só decorar uma opção docat, que seja esta.-ee-t— atalhos para-vEe-vT, respetivamente.
$ cat -A deploy.sh
#!/bin/bash^M$
set -euo pipefail^M$
$
APP_DIR=/var/www/app $
^Iecho "a actualizar"^M$
Neste exemplo vê-se de imediato o diagnóstico completo: o ^M denuncia finais de linha CR LF vindos do Windows, o ^I mostra indentação com tabulações e os espaços antes do $ revelam espaços pendurados no fim de uma linha. Três problemas invisíveis, expostos por um único comando.
Usos típicos além de “ver ficheiros”
cat a b > c— concatena vários ficheiros num só (a função que lhe deu o nome).cat >> ficheiro— acrescenta ao fim do ficheiro o que for escrito no teclado, terminado comCtrl+D.cat << EOF > ficheiro— heredoc: escreve um bloco inteiro de texto de uma vez, muito usado em scripts de aprovisionamento e automação.cat /proc/cpuinfo— leitura de ficheiros virtuais do kernel, como os de/proce/sys, que não existem em disco mas respondem como texto.
cat em cibersegurança
Análise de scripts suspeitos. Em resposta a incidentes, um script recolhido de uma máquina comprometida deve ser inspecionado com cat -A antes de qualquer outra coisa: carateres de controlo e sequências de escape podem ser usados para esconder comandos ou para manipular o que o terminal mostra. O -v neutraliza essa ocultação ao converter tudo em notação visível.
Ficheiros de configuração adulterados. Em hardening e auditoria, entradas com espaços finais ou tabulações inesperadas em ficheiros como sshd_config ou sudoers podem alterar o comportamento efetivo do serviço ou indicar edição manual não documentada. cat -A torna essas anomalias óbvias.
Triagem de artefactos em forense. Perante um ficheiro de origem desconhecida, a sequência prudente é file para identificar o tipo, depois cat -v (nunca cat simples) se for texto: despejar bytes arbitrários no terminal pode injetar sequências de controlo que alteram o título da janela, limpam o ecrã ou pior. Para binários, a análise passa para xxd ou hexdump -C.
Pipelines de análise de logs. O cat serve de ponto de entrada de pipelines rápidos — cat acesso.log | wc -l durante a exploração interativa — embora, como veremos, muitas vezes o comando seguinte possa ler o ficheiro diretamente.
Experimente no simulador interativo
O simulador abaixo mostra, lado a lado, o conteúdo real de três ficheiros de exemplo (um script vindo do Windows, um ficheiro de configuração problemático e um ficheiro limpo) e o que o cat imprime no terminal. Use o botão Demonstrar tudo para ver a sequência guiada completa, avance passo a passo com Anterior/Seguinte, ou clique diretamente nas opções (-n, -b, -s, -E, -T, -v, -A) para as combinar livremente e observar o efeito de cada uma.
Erros comuns e boas práticas
- O “uso inútil do cat”:
cat ficheiro | grep padrãocria um processo a mais sem qualquer benefício — escreva antesgrep padrão ficheiro. Em scripts, a diferença acumula-se. - Despejar ficheiros grandes no terminal: para ficheiros que não cabem num ecrã, use
less; para ver apenas o princípio ou o fim,headetail. - Fazer
cata binários: além de ilegível, pode corromper o estado do terminal com sequências de controlo. Confirme primeiro comfilee usecat -vouxxdquando necessário. - Corrigir sintomas em vez da causa: quando o
cat -Arevela^M, a correção definitiva é converter o ficheiro comdos2unix— e configurar o editor e o controlo de versões para não reintroduziremCR LF. - Confundir
-ncom-b: em ficheiros com linhas vazias, os números não coincidem; ao reportar a linha de um problema, indique qual das opções usou. - Esquecer o
tac: para ler um log do fim para o princípio (os eventos mais recentes primeiro),tacfaz o inverso docatlinha a linha.
Conclusão
O cat é muito mais do que um visualizador de ficheiros: com -A torna-se a primeira ferramenta de diagnóstico a correr quando “nada faz sentido”, e com os redirecionamentos e heredocs é um bloco de construção essencial da automação em Linux. Dominar estas opções poupa horas de depuração — e, em cibersegurança, evita que carateres invisíveis passem despercebidos numa investigação. Se este tipo de conteúdo lhe é útil, a equipa HJFR oferece formação prática em Linux e cibersegurança, além de consultoria especializada: conheça o nosso catálogo de serviços e veja também o artigo anterior da série, sobre o comando useradd.
Este artigo faz parte da série «Comandos Linux, um a um» do blog HJFR — fique atento aos próximos comandos.
