Agregar comportamiento de cola donde enter agrega líneas en blanco a menos

8

Me encanta less, que puedo usar para seguir registros con la +Fbandera (o la ShiftFtecla de acceso rápido), buscar hacia adelante y hacia atrás, y generalmente moverme libremente por el documento.

Pero falta una cosa less: por lo general, estoy al final del archivo y quiero ver que sucedan cosas nuevas. En tail -fSolo golpearía entervarias veces, y las nuevas líneas de registro aparecerían claramente separadas de las viejas.

¿Es posible agregar esto a less? ¿Cómo?

blueFast
fuente
No creo que puedas hacer esto, aunque a veces haré echo -e '\ n \ n \ n \ n \ n' >> / dev / pts / 0 por ejemplo, no es tan limpio pero al menos permite Tengo un punto de referencia donde lo dejé cuando miro hacia otro lado.
David Houde

Respuestas:

6

Este no es realmente tailel comportamiento, es la terminal. Tail solo está enviando un flujo de salida a stdout, que va a su terminal, e inserta líneas en blanco en el medio de esa salida presionando enter. La cola en sí misma no está aceptando ninguna aportación tuya. Puedes escribir lo que quieras y eso también aparecerá.

less, sin embargo, es una aplicación de consola, y toma datos y los procesa. Está administrando la consola usando secuencias de control de terminal, que es cómo puede desplazarse. Permitirle insertar caracteres arbitrarios en la secuencia desordenaría la pantalla, y de todos modos utiliza menos su entrada para controlar el programa.

Desafortunadamente, no parece tener una manera de marcar visualmente la posición actual. Eso no es una solicitud de función terribles, sin embargo, y menos no todavía conseguir nuevas características de vez en cuando.

mattdm
fuente
¿Tiene un enlace a mano para solicitar esta función a los menos mantenidos?
blueFast
@gonvaled gnu.org/software/less
Michael Hampton
4

Encontré tu pregunta mientras buscaba la misma respuesta para mí.

Decepcionado por la respuesta aceptada, se me ocurrió una solución. Es menos que ideal, pero me permite marcar mi posición en el registro con el que estoy siguiendo less, que es el punto principal.

Creé un pequeño script ejecutable (lo llamé marklog) con los siguientes contenidos, y lo puse en mi camino:

#!/bin/sh
echo >> $1
echo >> $1
echo >> $1
echo `date` ---------------------------------------------------------------------- >> $1
echo >> $1
echo >> $1

Por supuesto, esto solo funciona si tiene acceso de escritura al archivo de registro, lo que podría ser un factor decisivo en muchas situaciones. También he creado esta versión que utilizo para escribir en archivos de registro que no tengo (pero a los que tengo acceso sudo):

#!/bin/sh
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo `date` ------------------------------------------------------------------------- >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"

Estas secuencias de comandos proporcionan el tipo de descanso visual que estaba buscando. Hay al menos 3 formas de usarlos:

  1. En el punto en el que normalmente presionaría enter varias veces al usar tail -f, en lugar de eso, ejecute marklogdesde otro terminal (proporcionando la ruta al archivo de registro como argumento).

  2. Use CtrlZpara suspender lesspara que pueda ejecutar el script en la misma ventana de terminal, pero cuando vuelve a poner en primer plano less(usando fg, por supuesto), ya no estará en modo 'seguir', por lo que deberá presionar ShiftFnuevamente ...

  3. Por último, y esta podría ser la forma más conveniente, ya que no necesita escribir la ruta al archivo de registro: ejecute marklogdirectamente desde lessescribiendo !marklog %. Lesssustituirá el nombre de archivo actual por %. Sin embargo, lessno responderá a la! mientras está en modo 'seguir', por lo que deberá presionar CtrlCprimero para salir del modo seguir, ejecutar !marklog %y luego ShiftFnuevamente.

Con el método 3, también obtienes la ventaja adicional del historial de comandos de Less: simplemente presiona !y luego usa la flecha hacia arriba para seleccionar el comando más reciente (para mí, siempre es marklog).

Espero que esto ayude a alguien tanto como ya me ha ayudado.

Lambart
fuente
1

Presione Shift+ Fal final del archivo y menos comenzará a funcionar como tail -f.

kofemann
fuente
2
No, no lo hará. Seguirá nuevas líneas, pero no funcionará como tail -f. Específicamente no aceptará ingresar como nuevas líneas, que es el único punto de mi pregunta. Además, ya mencioné Shift+Fen la pregunta (con un pequeño error, debo decir)
blueFast
1

No creo que puedas hacer esto. He usado my 'para marcar lugares de interés y luego volver a ir a ellos, pero esto no te da la separación que pides. Quizás algo como multitail hará lo que quieras.

usuario9517
fuente
-1

La respuesta de Lambart me lleva a mi solución favorita. Gracias a Lambart!

Simplemente ingrese el modo de seguimiento ctrlcy entre !printf "\n\n---$(date)---\n\n" >> %. Después de eso, debe presionar enteruna vez más y presionar shiftfpara comenzar nuevamente después del archivo.

iRaS
fuente