Usar ‘less’ como si fuera un ‘tail -f’

Como ya sabéis, ‘tail -f‘ permite visualizar a tiempo real el final de un fichero y las nuevas líneas que se van añadiendo al mismo. Por otro lado ‘less‘ es el comando más completo para mostrar mostrar el contenido de ficheros de texto desde la línea de comandos en sistemas Unix. Less tiene capacidad de navegación por el fichero (avanzar y retroceder) y sus comandos están basados en el editor ‘vi’, del cual se diferencia en que no tiene que leer todo el contenido del fichero antes de ser abierto. Tiene una gran cantidad de opciones y parámetros.

Una de estas opciones de ‘less’ permite que el comando se comporte de forma similar a un ‘tail -f’:

F      Scroll forward, and keep trying to read when the end of file is reached.  
Normally this command  would be used when already at the end of the file.
It is a way to monitor the tail of a file which is growing while it is being viewed.
(The behavior is similar to the "tail -f" command.)

De este modo podemos combinar todas las funcionalidades de less pudiendo al mismo tiempo visualizar a tiempo real el contenido que se va añadiendo a un fichero de texto:

$ less +F foo.txt

‘+F’ es para visualizar el final del fichero, ‘-F’ sería el principio. Para parar la visualización a tiempo real del fichero debemos interrumpir la ejecución (Ctrl + C):

Waiting for data... (interrupt to abort)

Una vez que hemos interrumpido el «tail -f», podemos trabajar con el fichero de la forma habitual que haríamos con «less». Para reanudar a la ejecución del «tail», tecleamos SHIFT+F. El resto de atajos de teclado son los de siempre al igual que en vi, «q» para salir, SHIFT+G para ir al final del fichero, ESC + nº de línea + G para ir a una línea en concreto, «f» para avanzar una página, «g» para retroceder, etc.

La ejecución con less en ficheros con mucho movimiento será más lenta que un tail, sobre todo si tenemos activo el cálculo de números de línea. Veréis el siguiente mensaje:

Calculating line numbers... (interrupt to abort)

Para deshabilitar esta funcionalidad añadid el parámetro «-n»:

$ less -n +F foo.txt
-n or --line-numbers
	Suppresses  line numbers. The default (to use line numbers) may cause less to
        run more slowly in somecases, especially with a very large input file.
        Suppressing line numbers  with the -n option  will avoid this problem.
        Using line numbers means: the line number will be displayed in the verbose prompt
        and in the = command, and the v command will pass the current line number to the
        editor (see also the discussion of LESSEDIT in PROMPTS below).