No dia a dia de um desenvolvedor ou administrador de sistemas, é comum precisar inspecionar o conteúdo de arquivos diretamente no terminal. O shell oferece diversas ferramentas para isso, cada uma com características específicas para diferentes cenários: desde a exibição simples de arquivos pequenos até a navegação interativa em arquivos enormes, passando pela visualização das primeiras ou últimas linhas e até mesmo o monitoramento em tempo real de logs.

Nesta aula, exploraremos os comandos cat, less, more, head, tail (incluindo a opção -f) e wc. Ao final, você será capaz de escolher a ferramenta adequada para cada situação e aplicá-la com eficiência.

cat, less, more

O comando cat (de concatenate) é o mais simples: ele lê o arquivo e imprime todo o seu conteúdo na saída padrão (terminal). É ideal para arquivos pequenos ou quando se deseja redirecionar a saída para outro comando via pipe. Por exemplo, cat arquivo.txt exibe o arquivo inteiro. No entanto, para arquivos grandes, o conteúdo passa rapidamente na tela, tornando difícil a leitura.

Para arquivos maiores, usamos paginadores como less e more. more é o paginador original, que exibe o conteúdo uma página por vez e permite avançar com a barra de espaço. Já less é uma versão mais moderna e potente, que permite navegar para frente e para trás, buscar por padrões (com /), e possui mais opções de atalhos. Atualmente, less é o padrão na maioria das distribuições Linux. Exemplo: less /var/log/syslog.

# Exibe o conteúdo de um arquivo pequeno
cat /etc/hostname

# Usando more (pressione 'q' para sair)
more /etc/passwd

# Usando less (mais flexível)
less /etc/passwd

head e tail

Os comandos head e tail são usados para visualizar apenas partes do arquivo, geralmente o início ou o final. Por padrão, head exibe as primeiras 10 linhas e tail as últimas 10 linhas. A opção -n permite especificar um número diferente de linhas. Exemplos:

# Mostra as 5 primeiras linhas
tail -n 5 /etc/group

# Mostra as 20 últimas linhas
tail -n 20 /var/log/dpkg.log

Uma opção útil do head é -c para exibir um número específico de bytes, e do tail é -f (follow), que discutiremos a seguir. Ambos são frequentemente usados em pipelines para processar apenas partes de arquivos.

tail -f

A opção -f do tail coloca o comando em modo de monitoramento: ele exibe as últimas linhas do arquivo e, em seguida, fica aguardando novas linhas serem escritas, mostrando-as em tempo real. Isso é extremamente útil para acompanhar logs em desenvolvimento ou produção. Exemplo clássico:

# Monitora o log do sistema
tail -f /var/log/syslog

# Para interromper, pressione Ctrl+C

Você pode combinar -f com -n para exibir um número personalizado de linhas antes de começar a seguir. Além disso, o tail -f suporta múltiplos arquivos, exibindo uma indicação de qual arquivo está sendo atualizado. Versões modernas também oferecem a opção --retry para continuar tentando se o arquivo não existir inicialmente.

wc

O comando wc (word count) conta linhas, palavras e caracteres de um arquivo ou da entrada padrão. Sem opções, ele exibe as três contagens: linhas, palavras e bytes (caracteres). Opções comuns:

  • -l: apenas linhas
  • -w: apenas palavras
  • -c: apenas bytes
  • -m: apenas caracteres (multibyte)
# Contagem completa
wc /etc/passwd

# Apenas linhas
wc -l /etc/passwd

# Apenas palavras
wc -w /etc/passwd

# Contagem de caracteres
wc -m /etc/passwd

O wc é frequentemente usado em pipelines para contar resultados de outros comandos, como ls -1 | wc -l para contar o número de arquivos em um diretório.

Boas Práticas e Observações Finais

  • Para arquivos muito grandes (logs de gigabytes), evite cat; prefira less ou tail para evitar sobrecarregar o terminal.
  • Use head e tail para amostragens rápidas de dados.
  • Em scripts, wc -l é útil para verificar se um arquivo tem linhas suficientes antes de processá-lo.
  • Combine tail -f com grep para monitorar apenas linhas de interesse: tail -f /var/log/syslog | grep ERROR.

Exercícios

  1. Crie um arquivo chamado exemplo.txt com 15 linhas (use um laço no bash: for i in {1..15}; do echo "Linha $i"; done > exemplo.txt). Use head para exibir as primeiras 5 linhas.

    ✓ Resposta:
    head -n 5 exemplo.txt
  2. Com o mesmo arquivo, use tail para exibir as últimas 3 linhas.

    ✓ Resposta:
    tail -n 3 exemplo.txt
  3. Use wc para contar quantas linhas, palavras e bytes existem no arquivo /etc/passwd.

    ✓ Resposta:
    wc /etc/passwd
  4. Explique a diferença entre more e less e dê um exemplo de uso de less para buscar a palavra "root" em /etc/passwd.

    ✓ Resposta:

    more permite apenas avançar no arquivo (espaço para próxima página, 'b' para voltar, mas limitado). less permite navegar para frente e para trás, buscar com / e ?, e tem mais funcionalidades. Exemplo: less /etc/passwd e depois digitar /root e Enter para buscar.

  5. Execute o comando tail -f /var/log/syslog (se tiver permissão) e explique o que ele faz. Como interrompê-lo?

    ✓ Resposta:

    O comando tail -f /var/log/syslog exibe as últimas 10 linhas do log e depois fica monitorando o arquivo, mostrando novas linhas em tempo real. Para interromper, pressione Ctrl+C.

Referências