Ver archivos con head, tail y cat

LinuxBeginner
Practicar Ahora

Introducción

Bienvenido al mundo de la visualización de archivos en Linux. En el módulo anterior aprendió a organizar archivos. Ahora es el momento de abrirlos y leer su contenido.

En este laboratorio aprenderá las tres formas fundamentales de consultar el contenido de un archivo:

  1. cat: lee todo el archivo de una vez. Es adecuado para notas pequeñas.
  2. head: lee solo el principio, es decir, el «encabezado». Es útil para comprobar de qué trata un archivo.
  3. tail: lee solo el final. Es útil para comprobar las actualizaciones más recientes de un archivo de registro.

También aprenderá un truco especial para supervisar la actualización de un archivo en tiempo real.

Este es un paso importante para familiarizarse con Linux. En los módulos anteriores aprendió cómo se organizan los archivos. Ahora empezará a interactuar con su contenido. En los sistemas reales, gran parte de la administración consiste en saber leer el archivo de texto adecuado de la manera correcta.

Ver un archivo completo (cat)

El comando cat es la forma estándar de decir: «Muéstreme todo lo que hay en este archivo».

Funciona mejor con archivos pequeños. Si lo usa con un archivo enorme, el texto pasará por la pantalla demasiado rápido para poder leerlo.

El nombre cat es una abreviatura de concatenate («concatenar»), porque originalmente el comando se diseñó para unir e imprimir el contenido de archivos. Muchos principiantes lo conocen primero como una herramienta de visualización, pero históricamente formaba parte de un estilo más amplio de procesamiento de texto.

Hemos preparado un archivo pequeño llamado sample.txt.

Primero, vaya a la carpeta del proyecto:

cd ~/project

Ahora, muestre el contenido del archivo en la pantalla:

cat sample.txt

Verá todo el contenido impreso al instante:

Line 1: This is a sample file.
Line 2: It is used to demonstrate the cat command.
Line 3: The cat command displays the full content.
Line 4: This file is short enough to read easily.
Line 5: End of the sample file.

Para archivos más grandes, necesitamos herramientas más adecuadas.

Ver el principio de un archivo (head)

A veces solo necesita comprobar el título o las primeras líneas. Para eso sirve head. Este comando muestra la «cabeza», es decir, el principio de un archivo.

De forma predeterminada, head muestra las primeras 10 líneas.

Este valor predeterminado resulta útil porque el principio de un archivo suele incluir información de contexto: un encabezado, comentarios, nombres de columnas o los primeros registros. En otras palabras, head permite obtener rápidamente una muestra del archivo.

Veamos /etc/passwd. Se trata de un archivo de sistema largo que contiene información sobre los usuarios.

head /etc/passwd

Debería ver únicamente las primeras 10 líneas.

Personalizar la vista

¿Qué ocurre si solo quiere las 5 primeras líneas? Puede indicar a head exactamente cuántas líneas desea mediante la opción -n, que significa «número».

head -n 5 /etc/passwd

Es una forma excelente de obtener una muestra de un archivo sin leerlo completo.

Ver el final de un archivo (tail)

Si head muestra el principio, tail muestra el final. El comando tail muestra las últimas líneas de un archivo.

En Linux, los registros se escriben de forma secuencial. La entrada más «reciente» siempre se encuentra al final. Por eso, si algo falla ahora mismo, el mensaje de error estará al final del archivo.

Esta es la razón por la que tail está tan estrechamente relacionado con las tareas operativas. Los registros suelen crecer mediante la adición de nuevas líneas, por lo que la parte inferior del archivo es la que probablemente explique mejor un problema actual.

Inspeccionemos el registro del sistema /var/log/syslog.

tail /var/log/syslog

Verá las últimas 10 entradas.

Al igual que con head, puede limitar el número de líneas. Para ver los últimos 5 eventos:

tail -n 5 /var/log/syslog

Este es uno de los comandos básicos de los administradores de sistemas. Cuando un servidor falla, lo primero que suelen escribir es tail.

Supervisar registros en tiempo real (tail -f)

Los archivos estáticos pueden resultar aburridos; los datos en tiempo real son más interesantes. El comando tail tiene la opción -f, que significa follow («seguir»).

Cuando usa -f, tail espera. Si un programa escribe una línea nueva en ese archivo, tail la detecta y la imprime al instante. Es como observar un teletipo de noticias en directo.

Este es uno de los primeros momentos en los que el terminal empieza a sentirse interactivo en lugar de estático. En vez de leer un archivo terminado, observará cómo aparecen los eventos a medida que un programa los produce.

Pruebe esta función con dos terminales.

Terminal 1 (el observador)

Empiece a supervisar el archivo de registro:

tail -f ~/project/app.log

El cursor quedará esperando. El terminal parecerá «bloqueado», pero en realidad estará escuchando.

Terminal 2 (el generador)

Abra un segundo terminal; haga clic en el botón + situado junto a las pestañas. Escribiremos en el registro:

echo "New log entry at $(date)" >> ~/project/app.log

Vuelva rápidamente a Terminal 1. ¡Verá aparecer el mensaje!

Regrese a Terminal 2 y genere más eventos:

echo "Another event happened" >> ~/project/app.log
echo "System is running smoothly" >> ~/project/app.log

En cuanto pulse Enter en Terminal 2, el texto aparecerá en Terminal 1. Así es como los ingenieros supervisan los servidores en tiempo real.

Para terminar, vuelva a Terminal 1. Pulse Ctrl+C para dejar de seguir el archivo y regresar al prompt.

Resumen

¡Enhorabuena! Ahora dispone del conjunto básico de herramientas para examinar archivos en Linux.

  • cat: lee todo el archivo. Es adecuado para archivos pequeños.
  • head: lee el principio. Es útil para comprobaciones rápidas.
  • tail: lee el final. Es adecuado para los registros.
  • tail -f: supervisa un archivo en tiempo real.

Estos comandos le permiten responder a la pregunta: «¿Qué contiene este archivo?».