El comando de tail, como su nombre indica, imprime el último número N de datos de la entrada dada. Por defecto imprime las últimas 10 líneas de los archivos especificados.
Funcionamiento del Comando tail en Linux
Si se proporciona más de un nombre de archivo, los datos de cada archivo están precedidos por su nombre de archivo.
tail [OPTION]... [FILE]...
Considera dos archivos con el nombre state.txt y capital.txt que contienen todos los nombres de los estados y capitales de India, respectivamente.
$ cat state.txt
Andhra Pradesh
Arunachal Pradesh
Assam
Bihar
Chhattisgarh
Goa
Gujarat
Haryana
Himachal Pradesh
Jammu y Cachemira
Jharkhand
Karnataka
Kerala
Madhya Pradesh
Maharashtra
Manipur
Meghalaya
Mizoram
Nagaland
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
Bengala Occidental
$ cat capital.txt
Andhra Pradesh
Arunachal Pradesh
Assam
Bihar
Chhattisgarh
Goa
Gujarat
Haryana
Himachal Pradesh
Jammu y Cachemira
Jharkhand
Karnataka
Kerala
Madhya Pradesh
Maharashtra
Manipur
Meghalaya
Mizoram
Nagaland
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
Bengala Occidental
El comando tail sin ninguna opción, muestra solo las últimas 10 líneas del archivo especificado.
$ tail state.txt
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
Bengala Occidental
Opciones del comando tail en Linux
-n num:
Imprime las últimas líneas num/número en lugar de las últimas 10 líneas. num es obligatorio especificarlo en el comando; de lo contrario, mostrará un error.
La Chuleta de Comandos de Linux Definitiva: Maneja la Terminal como un Profesional
Este comando también se puede escribir sin simbolizar el carácter ‘n’, pero el signo ‘-‘ es obligatorio.
$ tail -n 3 state.txt
Uttar Pradesh
Uttarakhand
West Bengal
OR
$ tail -3 state.txt
Uttar Pradesh
Uttarakhand
West Bengal
El comando de tail también viene con una opción ‘+’ que no está presente en el comando de head. Con esta opción, el comando tail imprime los datos a partir del número de línea especificado del archivo en lugar del final.
Para el comando: tail +n NombreFichero los datos comenzarán a imprimirse desde el número de línea ‘n’ hasta el final del archivo especificado.
$ tail +25 state.txt
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West Bengal
-c num:
Imprime los últimos ‘num’ bytes del archivo especificado. El salto de línea cuenta como un solo carácter, por lo que si tail imprime un salto de línea, lo contará como un byte.
En esta opción es obligatorio escribir -c seguido de num/número positivo o negativo dependiendo del requerimiento.
Por +num , se muestra todos los datos después de omitir num bytes desde el inicio del archivo especificado y por -num , muestra los últimos num bytes del archivo especificado.
Nota: Sin un signo positivo o negativo antes de num, el comando mostrará los últimos num bytes del archivo especificado.
Con números en negativo
$ tail -c -6 state.txt
Bengal
OR
$ tail -c 6 state.txt
Bengal
Con números en positivo
$ tail -c +263 state.txt
Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
-q:
Se usa si se da más de 1 archivo. Debido a este comando, los datos de cada archivo no van precedidos por su nombre de archivo.
Sin usar la opción -q
$ tail state.txt capital.txt
state.txt
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West Bengal
capital.txt
Dispur
Patna
Raipur
Panaji
Gandhinagar
Chandigarh
Shimla
Srinagar
Ranchi
Con el uso de la opción -q
$ tail -q state.txt capital.txt
Odisha
Punjab
Rajastán
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
Bengala Occidental Dispur
Patna
Raipur
Panaji
Gandhinagar
Chandigarh
Shimla
Srinagar
-f:
esta opción es utilizada principalmente por la administración del sistema para monitorear el crecimiento de los archivos de registro escritos por muchos programas de Unix mientras se ejecutan.
Esta opción muestra las últimas diez líneas de un archivo y se actualiza cuando se agreguen nuevas líneas. A medida que se escriben nuevas líneas en el registro, la consola se actualizará con las nuevas líneas.
El indicador no regresa incluso después de que finaliza el trabajo, por lo que debemos usar la tecla de interrupción para cancelar de este comando.
En general, las aplicaciones escriben mensajes de error en los archivos de registro. Puedes utilizar la opción -f para comprobar los mensajes de error a medida que aparecen en el archivo de registro.
$ tail -f logfile
-v
al usar esta opción, los datos del archivo especificado siempre van precedidos por su nombre de archivo.
$ tail -v state.txt
==> state.txt <==
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
Bengala Occidental
–version:
esta opción se usa para mostrar la versión de tail que se está ejecutando actualmente en el sistema.
$ tail --version
tail (GNU coreutils) 8.26
Empaquetado por Cygwin (8.26-1)
Copyright (C) 2016 Free Software Foundation, Inc.
Licencia GPLv3+: GNU GPL versión 3 o posterior.
Este es software libre: eres libre de cambiarlo y redistribuirlo.
NO HAY GARANTÍA, en la medida permitida por la ley.
Escrito por Paul Rubin, David MacKenzie, Ian Lance Taylor y Jim Meyering.
Aplicaciones del Comando de tail
¿Cómo usar tail con pipes? (|)
El comando tail se puede canalizar con muchos otros comandos de Unix. En el siguiente ejemplo, la salida del comando tail se proporciona como entrada al comando sort con la opción -r para ordenar los últimos 7 nombres de estado provenientes del archivo state.txt en el orden inverso.
$ tail -n 7 state.txt
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
Bengala Occidental
$ tail -n 7 state.txt | sort -r
Bengala Occidental
Uttarakhand
Uttar Pradesh
Tripura
Telangana
Tamil Nadu
Sikkim
También se puede canalizar con uno o más filtros para un procesamiento adicional. Como en el siguiente ejemplo, usando el comando cat, head y tail, en cuya salida se almacena en el nombre de archivo list.txt usando la directiva (>).
$ cat state.txt | head -n 20 | tail -n 5 > list.txt
$ cat list.txt
Manipur
Meghalaya
Mizoram
Nagaland
Odisha
Lo que está sucediendo en este comando es que el primer comando cat brinda todos los datos presentes en el archivo state.txt y luego la tubería / pipeline transfiere la salida proveniente del comando cat al comando head.
El comando principal brinda todos los datos desde el inicio (número de línea 1) hasta el número de línea 20 y transfiere toda la salida proveniente del comando principal al comando final.
Luego, el comando tail proporciona las últimas 5 líneas de los datos y la salida va al nombre del archivo list.txt a través del operador de directiva.