Tutorial de Linux / Ler arquivos com cat, less, more, head e tail

Use cat para imprimir um arquivo de texto curto, less ou more para percorrer um arquivo longo e head ou tail para consultar apenas o começo ou o fim. Ler um arquivo no terminal é diferente de editá-lo. Nesta aula, aplique os cinco comandos ao mesmo arquivo de prática e escolha a ferramenta conforme a tarefa.

O objetivo aqui é ler o conteúdo. Para selecionar, ordenar e contar linhas, consulte a aula de processamento de texto com grep, cut, sort, uniq e wc, em inglês.

Preparar um arquivo de prática com segurança

Execute os comandos em uma sessão Bash no Linux, como usuário comum, em um diretório no qual possa gravar. Os exemplos de cat, head, tail e seq usam o GNU Coreutils. Os paginadores less e more podem não estar instalados em um sistema mínimo. Se aparecer command not found, use uma ferramenta disponível ou consulte a instalação de pacotes de sua distribuição.

Crie uma pasta nova dentro do seu diretório pessoal. Se ~/linux-course-10-practice já existir, escolha outro nome e substitua-o nas duas primeiras linhas. Se mkdir ou cd falhar, pare: continuar pode levar à gravação em uma pasta existente ou em outro local.

mkdir ~/linux-course-10-practice
cd ~/linux-course-10-practice
pwd

Confirme que pwd mostra a pasta nova antes de criar o arquivo; o sucesso de pwd sozinho não comprova que cd funcionou. Em printf, \n representa uma quebra de linha. A redireção > envia a saída padrão para o arquivo e, por padrão, trunca o conteúdo de um arquivo existente. Use o comando abaixo somente quando sample.txt ainda não existir na pasta nova.

printf 'alpha\nbeta\ngamma\ndelta\nepsilon\n' > sample.txt

Imprimir um arquivo curto com cat

cat envia o conteúdo do arquivo para a saída padrão, que normalmente aparece no terminal quando não há redireção ou encadeamento. Ao ler o arquivo de prática, ele imprime as cinco linhas na ordem em que foram gravadas.

cat sample.txt

Saída esperada:

alpha
beta
gamma
delta
epsilon

cat não divide o conteúdo em páginas nem edita o arquivo. Um arquivo muito longo pode passar rapidamente pela tela; nesse caso, prefira um paginador. Evite enviar um arquivo binário ou desconhecido diretamente ao terminal, pois seu conteúdo pode incluir caracteres de controle.

Percorrer arquivos longos com less e more

Um paginador exibe o conteúdo por telas, permitindo controlar a leitura. Com less, use Space para avançar uma tela e b para voltar. Digite /gamma e pressione Enter para procurar essa palavra; n repete a busca na mesma direção e q encerra o programa.

less sample.txt

As teclas são usadas dentro de less, depois que o programa abre; não são comandos para acrescentar à linha do Bash. Neste arquivo de cinco linhas, talvez tudo caiba em uma tela. Como gamma ocorre uma vez, n pode informar que não há outra correspondência. Dependendo das opções configuradas, como -F, um arquivo curto também pode fazer less encerrar automaticamente.

more também apresenta o texto por telas. Em sua operação comum, Space avança e q sai; algumas implementações encerram ao chegar ao fim do arquivo. Os recursos e as teclas dependem da implementação e do ambiente. Se precisar percorrer e pesquisar um texto longo, less costuma ser uma escolha conveniente; isso não significa que toda versão de more seja incapaz de voltar ou pesquisar.

more sample.txt

Consultar o começo e o fim com head e tail

Use head para o início e tail para o final do arquivo. Nas ferramentas GNU, o padrão é mostrar até dez linhas; -n 2 pede duas. Se o arquivo tiver menos linhas do que a quantidade solicitada, ele será mostrado por inteiro.

head -n 2 sample.txt
tail -n 2 sample.txt

O primeiro comando imprime alpha e beta:

alpha
beta

O segundo imprime delta e epsilon:

delta
epsilon

tail -f arquivo mostra o final e continua aguardando novos dados acrescentados; substitua arquivo pelo caminho real. Use Ctrl+C para interrompê-lo em uma sessão interativa comum. Se nada for acrescentado, a ausência de novas linhas não significa que o programa travou. Você precisa ter permissão para ler o arquivo.

No GNU tail, -f acompanha por padrão o descritor do arquivo aberto: renomear o arquivo não o faz passar automaticamente a outro arquivo criado com o nome antigo. Para logs substituídos ou rotacionados, tail -F arquivo equivale a acompanhar o nome com novas tentativas de abertura. Essa opção não recupera linhas que já tenham sido perdidas nem contorna permissões. Para mais opções, consulte o guia do comando tail.

Escolher a ferramenta e experimentar a paginação

Necessidade Comando Motivo
Ler um arquivo curto inteiro cat Imprime todo o conteúdo diretamente
Percorrer e pesquisar um texto longo less Permite paginação e busca
Fazer uma leitura básica por telas more Controla o avanço da exibição
Consultar as primeiras linhas head -n Limita a saída ao início
Consultar as últimas linhas ou acréscimos tail -n, tail -f Mostra o fim ou acompanha novos dados

Uma extensão de nome não garante que o arquivo seja texto. Se houver dúvida, consulte sua classificação com file, como explicado na aula de tipos de arquivo e metadados; a classificação também tem limites. Os comandos de leitura usados nesta prática não gravam no arquivo original. Já >, utilizado na preparação, pode sobrescrevê-lo. A exibição no terminal também depende dos caracteres presentes e da configuração de idioma e codificação.

Para observar a paginação, volte à mesma pasta de prática e confirme que long-sample.txt não existe. Crie um arquivo separado com os números de 1 a 80, um por linha. Depois de less abrir, pressione Space, b e, para pesquisar, /40 seguido de Enter. Encerre com q. A quantidade de linhas de uma tela depende da altura do terminal.

seq 1 80 > long-sample.txt
less long-sample.txt

O arquivo sample.txt continua com suas cinco linhas, pois o segundo arquivo tem outro nome. Depois da comparação, você pode remover apenas o arquivo adicional com rm -i long-sample.txt, conferindo o nome e a confirmação solicitada. Não remova a pasta inteira para encerrar o exercício.

Documentação oficial

Consulte os manuais GNU de cat, head e tail, além da documentação de redireções do Bash. As páginas de manual de less e more do util-linux descrevem a navegação. No sistema instalado, man less e man more mostram as opções da versão disponível, se as páginas de manual estiverem instaladas.