Como sabrá, el comando cat se usa para mostrar todo el contenido de un archivo a través de la entrada estándar. Pero en algunos casos, tenemos que imprimir la última parte del archivo. En Linux y Unix, el comando tail se usa para mostrar las últimas 10 líneas (de forma predeterminada) de un archivo usando la salida estándar.
El comando Tail se usa comúnmente para ver y analizar archivos, ya que puede mostrar líneas recién agregadas. Esta característica se usa principalmente para ver registros u otros archivos que se actualizan de vez en cuando.
En este tutorial, aprendemos a usar el comando tail en Linux con algunos ejemplos prácticos. También analizaremos las opciones de cola en detalle.
Sintaxis del comando de cola
La siguiente línea muestra la sintaxis del comando tail:
tail [OPTION]... [FILE]...
Sin ninguna OPTION
o FILE
, el comando tail acepta la entrada de STDIN. Entonces, en STDIN, si ingresa más de 10 líneas, solo se mostrarán las últimas 10 líneas donde el comando principal hace exactamente lo contrario del comando final.
El comando Tail puede aceptar uno o más nombres de archivo de entrada (FILE
).
1) Usar el comando tail para ver las últimas diez líneas de un archivo
Sin ninguna opción, comando de cola con visualización de las últimas 10 líneas del archivo de entrada.
En los siguientes ejemplos, el comando tail muestra las 10 líneas inferiores del archivo 'file1.txt':
$ tail file1.txt
memtest86+_multiboot.bin
System.map-2.6.38-12-generic
System.map-2.6.38-13-generic
System.map-2.6.38-8-generic
vmcoreinfo-2.6.38-12-generic
vmcoreinfo-2.6.38-13-generic
vmcoreinfo-2.6.38-8-generic
vmlinuz-2.6.38-12-generic
vmlinuz-2.6.38-13-generic
vmlinuz-2.6.38-8-generic
2) Muestra un número específico (limitado) de líneas
Si desea mostrar solo un número específico de líneas, debe usar la opción -n.
Podemos utilizar tres opciones diferentes para limitar el número de líneas.
Los siguientes tres comandos (-n100
, -n 100
, -100
) muestra las últimas 100 líneas del archivo '/var/log/apache2/error.log':
$ tail -n100 /var/log/apache2/error.log
o
$ tail -100 /var/log/apache2/error.log
o
$ tail -n 100 /var/log/apache2/error.log
3) Cómo mostrar varios archivos
El comando de cola puede mostrarse desde varios archivos cuando se proporciona como argumento. Luego genera las últimas 10 líneas de cada archivo y con un encabezado que muestra el nombre del archivo.
$ tail file1.txt file2.txt
==> file1.txt <==
memtest86+_multiboot.bin
System.map-2.6.38-12-generic
System.map-2.6.38-13-generic
System.map-2.6.38-8-generic
vmcoreinfo-2.6.38-12-generic
vmcoreinfo-2.6.38-13-generic
vmcoreinfo-2.6.38-8-generic
vmlinuz-2.6.38-12-generic
vmlinuz-2.6.38-13-generic
vmlinuz-2.6.38-8-generic
==> file2.txt <==
smi.conf
snmp
sound
speech-dispatcher
ssh
ssl
sudoers
sudoers.d
sysctl.conf
tr command
Si no desea imprimir los encabezados ('==> archivo1.txt <==' y '==> archivo2.txt <=='), puede usar el modo silencioso con -q
, --quiet
o --silent
opción. Esta opción se puede utilizar para combinar archivos.
$ tail -q file1.txt file2.txt
Si siempre desea imprimir encabezados, incluso cuando solo se proporciona un nombre de archivo como argumento, puede usar -v
o --verbose
opción
$ tail -v file1.txt
4) Mostrar los últimos bytes específicos de un archivo
Para mostrar los últimos bytes específicos del archivo, use -c
o --bytes
opción.
El siguiente comando tail imprime los últimos 30 bytes del archivo file2.txt:
$ tail -c 30 file2.txt
sudoers.d
sysctl.conf
sysctl.d
Alternativamente, puede usar -c +number
para generar todo a partir del byte number
.
$ tail -c +300 file1.txt
5) Ver cambios en archivos
Utilice -f
o --follow
opción para monitorear los cambios de archivos. Esta opción se usa muy comúnmente para monitorear y solucionar problemas de archivos de registro.
El siguiente comando mostrará los últimos 10 cambios en la terminal para el archivo '/var/log/Xorg.1.log'.
$ tail -f /var/log/Xorg.1.log
[ 86.774] (**) Option "xkb_layout" "us"
[ 86.774] (**) Option "xkb_options" "terminate:ctrl_alt_bksp"
[ 86.774] (II) Toshiba input device: (II) is tagged by udev as: Keyboard
[ 86.774] (II) Toshiba input device: (II) device is a keyboard
[ 88.453] (II) Display (Seiko/Epson (DFP-0)) does not support NVIDIA 3D
[ 88.453] (II) Vision stereo.
[ 102.094] (II) Display (Seiko/Epson (DFP-0)) does not support NVIDIA 3D
[ 102.094] (II) Vision stereo.
[ 540.435] (II) Axis 0x1 value 1158 is outside expected range
See https://wayland.freedesktop.org for details
El -f
La opción siempre esperará los datos adjuntos y no se cerrará por sí misma. Tienes que presionar Ctrl+C
para salir.
Intentemos mostrar las últimas 3 líneas de una salida de cola usando -n
y f
opciones.
$ tail -n3 -f /var/log/Xorg.1.log
[ 102.094] (II) Vision stereo.
[ 540.435] (II) Axis 0x1 value 1158 is outside expected range
See https://wayland.freedesktop.org for details
Usando el -fq
opción puede controlar los cambios de varios archivos.
$ tail -fq /var/log/Xorg.1.log file2.txt
Con -s
o --sleep-interval
(el valor predeterminado es 1 segundo), puede ajustar el intervalo de suspensión entre las iteraciones.
$ tail -f -s 4 /var/log/Xorg.1.log
Como se mencionó anteriormente con -f
opción el shell no sale solo, pero puede decirle al comando que termine después de que un proceso muere con el --pid
opción.
El comando se cerrará tan pronto como el proceso con PID 4309 muera.
$ tail -f file2.txt --pid=4309
Con --retry
opción, puede seguir intentando abrir un archivo incluso cuando es, o se vuelve, inaccesible. Una vez que sea accesible, se mostrará la salida.
$ tail -f file2.txt --retry
6) Usar cola con tubos
El comando tail se puede canalizar a/desde otros comandos para producir resultados optimizados.
El siguiente ejemplo usa el comando ls para listar todos los archivos y directorios y listar todos los directorios en la parte superior.
$ ls -l /etc | tail | sort
drwxr-xr-x. 2 root root 4096 Mar 3 08:15 yum.repos.d
drwxr-xr-x. 2 root root 4096 Mar 3 08:17 yum
drwxr-xr-x. 2 root root 4096 Sep 25 14:54 xinetd.d
drwxr-xr-x. 4 root root 4096 Sep 25 14:54 xdg
drwxr-xr-x. 6 root root 4096 Sep 25 14:54 X11
lrwxrwxrwx. 1 root root 12 Dec 19 15:43 yum.conf -> dnf/dnf.conf
-rw-r--r--. 1 root root 1204 Nov 11 19:08 virc
-rw-r--r--. 1 root root 1982 Nov 11 19:08 vimrc
-rw-r--r--. 1 root root 28 Sep 25 14:51 vconsole.conf
-rw-r--r--. 1 root root 642 Dec 9 2016 xattr.conf
Si desea ver las solicitudes de un tipo de archivo en particular, use el siguiente comando:
$ tail -f /var/log/apache/myvirtualhost.log | grep .jpg
En el siguiente ejemplo, el comando de cola de salida se canaliza y, al usar el comando sort, se ordena el contenido de 'continent.txt' en orden alfabético.
$ tail -n 5 continent.txt | sort
Africa
Antarctica
Asia
Australia
Europe
Conclusión
Ahora hemos visto cómo usar el comando tail y sus opciones para mostrar las líneas inferiores de un archivo de texto. Espero que haya disfrutado de la lectura y deje sus sugerencias en la sección de comentarios a continuación.