El comando Cat es uno de los más utilizados para mostrar el contenido de un archivo en Linux. Pero puede que no siempre quieras mostrar todas las líneas de un archivo grande. El comando Tail ayuda en tal escenario.
¿Qué es el comando Tail?
El comando tail, como su nombre indica, muestra las últimas partes de un solo archivo o de varios archivos. Por defecto, el comando tail imprime las últimas diez líneas de los archivos de entrada. El comando tail también se utiliza para leer archivos de registro en tiempo real.
La sintaxis del comando tail es
tail [opciones] [archivos]
5 ejemplos prácticos del comando Tail en Linux
Vamos a aprender a utilizar el comando tail en Linux con algunos ejemplos prácticos, para esto utilizaré el siguiente archivo de texto:
El misterioso asunto de Styles
El adversario secreto
El asesinato en el campo de golf
El hombre del traje marrón
El secreto de las chimeneas
El asesinato de Roger Ackroyd
Los cuatro grandes
El misterio del tren azul
El Misterio de los Siete Diales
El asesinato en la vicaría
El pan de los gigantes
El Almirante Flotante
El misterio de Sittaford
Peligro en End House
La muerte de Lord Edgware
Asesinato en el Expreso de Oriente
Retrato inacabado
¿Por qué no le preguntaron a Evans?
Tragedia en tres actos
Muerte en las nubes
Puedes descargar el archivo de ejemplo de nuestro repositorio de GitHub y seguir el tutorial mientras lo practicas al mismo tiempo.
Si utilizas el comando tail sin ninguna opción, imprimirá las últimas 10 líneas. Ese es el comportamiento por defecto del comando tail.
tail agatha.txt
El pan de los gigantes
El Almirante Flotante
El misterio de Sittaford
Peligro en End House
La muerte de Lord Edgware
Asesinato en el Expreso de Oriente
Retrato inacabado
¿Por qué no le preguntaron a Evans?
Tragedia en tres actos
Muerte en las nubes
Si el archivo tiene menos de diez líneas, te mostrarán sólo las líneas disponibles. Si las últimas líneas están en blanco, seguirán contando como líneas válidas.
Pero no tienes que conformarte con el uso por defecto del comando tail. Hay más cosas. Veamos los usos más comunes de los comandos tail uno por uno.
1. Imprimir las últimas N líneas con el comando tail
Para ver las últimas N líneas, en lugar de las 10 por defecto, puedes utilizar el comando tail de la siguiente manera:
tail -n N <nombre de archivo>
Por ejemplo, si quieres ver las últimas 5 líneas con el comando tail en nuestro archivo de ejemplo, puedes usarlo así:
tail -n 5 agatha.txt
Asesinato en el Expreso de Oriente
Retrato inacabado
¿Por qué no le preguntaron a Evans?
Tragedia en tres actos
Muerte en las nubes
2. Imprime todas las líneas que comienzan con el número de línea N
Si deseas ver todas las líneas que comienzan a partir de la línea número N, puedes utilizar aquí la opción +.
tail -n +N <nombre de archivo>
tail -n +7 agatha.txt
Los cuatro grandes
El misterio del tren azul
El Misterio de las Siete Calles
El asesinato en la vicaría
El pan de los gigantes
El Almirante Flotante
El misterio de Sittaford
Peligro en End House
La muerte de Lord Edgware
Asesinato en el Expreso de Oriente
Retrato inacabado
¿Por qué no le preguntaron a Evans?
Tragedia en tres actos
Muerte en las nubes
3. Uso de varios archivos con el comando tail
El comando tail permite utilizar más de un archivo al mismo tiempo. Todas las opciones estándar del comando tail son aplicables a los archivos múltiples.
tail -n N <archivo1> <archivo2> <archivo3>
La salida se combina para todos los archivos y, por defecto, el nombre del archivo se muestra en líneas que comienzan con «==>».
Por ejemplo, si quieres ver las tres últimas líneas de los archivos sherlock.txt y agatha.txt, sería de la siguiente manera:
tail -n3 sherlock.txt agatha.txt
==> sherlock.txt <==
La aventura del noble soltero
La Aventura del Coroneta de Berilo
La aventura de las hayas de cobre
==> agatha.txt <==
¿Por qué no le preguntaron a Evans?
Tragedia en tres actos
Muerte en las nubes
4. Monitorear archivos en tiempo real con el comando tail [Muy útil para monitorear registros].
Supon que tienes un archivo y que se le añade nuevo contenido. El comando tail te permite mostrar todas las nuevas líneas a medida que se añaden al archivo.
Para ello, puede utilizar la opción -f.
tail -f <fichero-registro>
El comando mostrará primero las últimas 10 líneas de los archivos y luego actualizará la salida a medida que se añadan nuevas líneas al archivo.
Esto se utiliza ampliamente para ver los archivos de registro en tiempo real. Este es quizás el uso más práctico del comando tail.
Consejo: Si utilizas la opción -F en lugar de -f, el comando tail esperará a que se cree el archivo de entrada (si no existe ya) y luego mostrará el contenido del archivo en tiempo real.
5. Uso del comando tail con pipes
El comando tail se puede utilizar en conjunción con otros comandos que utilizan pipes.
Por ejemplo, si tienes demasiados archivos en un directorio y sólo quieres ver los últimos 3 archivos modificados, puede utilizarlo de la siguiente manera:
ls -ltr | tail -n3
En el comando anterior, ls -lrt lista todos los archivos en orden cronológico inverso. Y luego el comando tail analiza esta salida y muestra sólo las tres últimas líneas de la salida del comando ls y así obtenemos la lista de los tres últimos archivos modificados.
Consejo adicional: Mostrar la salida del comando tail con números de línea
Los números de línea ayudan mucho a comprender y analizar la salida. Supongamos que muestra las últimas 20 líneas de un archivo, pero también quiere ver sus números de línea para poder ver el total de líneas del archivo.
Desafortunadamente, no hay una opción incorporada para mostrar la salida del comando tail con números.
Pero eso no significa que no pueda mostrar los números de línea con el comando tail. Para este propósito, puede usar el poder de los pipes. Acaba de ver en la sección anterior que los comandos tail pueden ser usados con pipes. Por qué no usarlo aquí.
nl es la forma de mostrar el contenido de un archivo con números de línea. Si lo combinas con el comando tail usando pipes, consigues mostrar la salida del comando tail con números de línea.
nl <nombre_de_archivo> | tail -3
Espero que los ejemplos del comando tail te sean útiles. Te recomiendo que leas también el comando head. Si tienes alguna sugerencia o pregunta, por favor compártela en la sección de comentarios.